Skip to main content

Full text of "Analog Computing Magazine Issue 74 (Special Graphics Issue)"

See other formats


The #1 Magazine For Atari Computer Owners 




ISSUE 74 
JULY 1989 



SPECIAL 



DISK VERSION $12.95 




\w 



nJ 



CHAOS 

CHARACTER SET 
DISPLAY UTILITY 
DEGAS VIEW 



REVIEWS: 

CRYSTAL CASTLES 
INTO THE EAGLFS [» 



SSUE: 




74369"50077' 



Give 'EmA.N.A.L.O.G..Harrv! 







Two Historic Facts: 

Dewey did not defeat. Truman for the Presidency in 1945. 

. Truman went on to be known for his truthful, forthright style 

and as one of the nation's most popular Chief Executive Officers. 

2 You can save time, and save a lot of money by subscribing to 
A.N.A.L.O.G. Computing Magazine. Save $19 off the cover 
price with the convenience of having A.N.A.L.O.G. delivered directly 
to your door before it even hits the newsstands. To order use the 
handy postage-paid order card located in the back of this magazine! 

1 YEAR FOR ONLY $28 

SAVE 119 OFF THE COVER PRICE 

1 YEAR WITH DISK ONLY $79 







It's an understatement to say that the 
Atari community is in turmoil— Atari 
computer owners are consistently bar- 
raged by soothsayers ringing the death 
knell for their favorite computers and the 
company that makes them— even though the 
machines have given many thousands of peo- 
ple good service down through the years. And 
through it all, Atari has survived, in one form 
or another, to bring further surprises to the 
marketplace. 

Having just returned from the World of 
Atari show in Anaheim, California, it's nice 
to see a few good companies still supporting 
the 8-bit line of computers. Though many 
power users feel lost without an "-est" com- 
puter— latest, fastest, biggest and so on— we 
all know how capable the Atari 8-bit line has 
been for so long. And with a few companies 
still striving to better them, we can continue 
to be productive and entertained. 

JULY A.IM.A.L.O.S. Computing 



by Andy Eddy 

But the most important support that Atari 
computer owners get is from fellow users, as 
the pages of ANALOG Computing testify. 
Each month we present informative reviews 
and articles, as well as type-in programs and 
tutorials, all written by your fellow Atari 
users. And this month, of course, is no 
different. 

For example, much has been said over the 
last few years about the graphics abilities of 
the ST line of computers. Even so, we all 
know that the 8-bit line is no slouch in the 
graphics department. To prove it, Matt Rat- 
cliff has put together a program that lets 8-bit 
users look at high-resolution, DEGAS-format 
ST pictures, with virtually no loss of detail. 

When you consider the power of the hard- 
ware, it's not hard to understand how Matt 
and others have stretched it beyond what most 
expect it could handle. After all, the Ninten- 
do Entertainment System uses a 6502 pro- 



cessor, the same one that's used in the Atari 
8-bit line, and we all know how popular the 
NES is these days! Along the same lines, 
there's a new game machine called the 
TurboGrafx-16— known in Japan as the PC 
Engine— due to be released shortly with an 
updated version of the 6502, and the output 
of this console is nothing short of 
phenomenal. 

The capabilities are there, waiting to be 
tapped. All it takes is a mixture of ingenuity, 
imagination and time. And don't forget that 
your programming efforts can earn cold, hard 
cash by being published in ANALOG Com- 
puting. If you have something that 8-bit own- 
ers can use, please send it to ANALOG 
Computing, P.O. Box 1413- MO, Manchester, 
CT 06040-1413 for consideration. Aside from 
the fame and fortune you'll receive, it'll give 
your fellow Atarians a little more "-est" for 
their computer. (R 




on page 10 




FEATURES 



8 

Character Set Display Utility 

This unique program will let you view up to six different font files all at the same 

time. A great way to find out just what all those fonts you 've accumulated really are. 

by Dave Arlington 



10 

Chaos 

They say that the universe tends toward chaos. But does it really? Could there, 
be some order in all that disorder? 
by Alfredo L. Acosta 



16 

Disk Master 

For those of you who want the power to directly access and manipulate your disk's 

data, we present this commercial-quality disk editor. 

by flairy Kolbe & Bryan Schappel 



18 

DEGAS View 

ST pictures on your 8-bit computer? You bet! 
by Matthew J.W. Ratclltl 



54 

AUTORUN.SYS Secrets in BASIC 

A few months ago we published an assembly language AUTORUN.SYS maker. Now 

here's a version for all you BASIC programmers. 

by David ScftocA 



74 

Mazerunner 

An interesting twist to the arcade maie-game genre. 100% machine language. 
by Matt Fruln 



on page 74 



ANALOG Computing (ISSN 0744-9917) is published monthly by L.F.P., Inc., 9171 Wilshire Blvd., Suite 300, Beverly Hills, CA 90210. © 1989 L.F.P., Inc. Return 
postage must accompany all manuscripts, drawings, photos, disks, etc., if they are to be returned, and no responsibility can be assumed for unsolicited materials. 
All rights reserved on entire contents; nothing may be reproduced in whole or in part without written permission from the publisher. U.S. subscription: $28 for one 
year (12 issues), $52 for two years (24 issues), $76 for three years (36 issues). Foreign subscription: Add $10 per year. Single copy $3.50 (add $1 for postage). Change 
of address: Six weeks advance notice, and both old and new addresses are needed. POSTMASTER: Send change of address to ANALOG Computing Magazine, 
P.O. Box 16927, North Hollywood, CA 91615. Second-class postage paid at Beverly Hills, CA, and additional mailing offices. 

4 JULY A.N.A.L.O.B. Computing 




67 Crystal Castles 

(Atari Corp.) 

by Matthew J. IV. Ratcliff 

68 Into the Eagle's Nest 

by Matthew J. IV. Ratcliff 



14 ST Notes 

by Frank Cohen 

58 Boot Camp 

by Tom Hudson 

72 The End User 

by Arthur Leyenberger 



3 Editorial 

by Andy Eddy 

6 Reader Comment 
n 8-bit News 
64 MIL Editor 

by Clayton Walnum 

70 BASIC Editor II 

by Clayton Walnum 



ANALOG 

COMPUTING 

STAFF 

Publisher 

LEE H. PAPPAS 
Executive Editor 

CLAYTON WALNUM 

Art Director 

KRISTEL PECKHAM 

Associate Editor 

ANDY EDDY 

Managing Editor 

DEAN BRIERLY 

East Coast Editor 

ARTHUR LEYENBERGER 

West Coast Editor 

CHARLES F. JOHNSON 

Contributing Editors 

MICHAEL BANKS, FRANK COHEN, 
MATTHEW J. W. RATCLIFF 

Cover Photography 

GARRY BROD 

Models 

JOHN BERADO 
NORMA EDWARDS 

Cover Illustration 

ALAN HUNTER 

Illustrations 

JOHN BERADO 

Copv Chief 

KATRINA VEIT 

Copy Editors 

NORMA EDWARDS 
RANDOLPH HEARD 

KIM TURNER 
SARAH WEINBERG 

Editorial Assistant 

PATRICIA KOURY 

Chief Typographer 

ALICE NICHOLS 

Typographers 

DAVID BUCHANAN 

B. MIRO JR. 

QUITA SAXON 

Contributors 

ALFRED L. ACOSTA 

DAVE ARLINGTON 

MATT FRUIN 

TOM HUDSON 

BARRY KOLBE 

BRYAN SCHAPPEL 

DAVID SCHOCH 

Vice President, Production 

DONNA HAHNER 

Executive Art Director 

PAMELA CARR 

Advertising Production 
Director 

JANICE ROSENBLUM 

Advertising Production 
Coordinator 

MAGGIE CHUN 

National Advertising Director 

JAY EISENBERG 
(213) 467-2266 

(For regional numbers, see right) 

Corporate Ad Director 

PAULA THORNTON 

Subscriptions Director 

IRENE GRADSTEIN 

Vice President, Sales 

JAMES GUSTAFSON 



JULY 1989 
ISSUE 74 



Where to Write 

All submissions should be sent to: ANALOG 
Computing, P.O. Box 1413-M.O., Manchester, CT 
06040-1413. All other editorial material (letters, 
press release, etc.) should be sent to: Editor, 
ANALOG Computing, 9171 Wilshire Blvd., Suite 
300, Beverly Hills, CA 90210. 

Correspondence regarding subscriptions, in- 
cluding problems and changes of address, should 
be sent to: ANALOG Computing, P.O. Box 16927, 
North Hollywood, CA 91615, or call (818) 
760-8983. 

Correspondence concerning a regular column 
should be sent to our editorial address, with the 
name of the column included in the address. 

We cannot reply to all letters in these pages, 
so if you would like an answer, please enclose a 
self-addressed, stamped envelope. 

An incorrectly addressed letter can be delayed 
as long as two weeks before reaching the proper 
destination. 

Advertising Sales 

Address all advertising materials to: 
Paula Thornton — Advertising Production 
ANALOG Computing 

9171 Wilshire Blvd., Suite 300 
Beverly Hills, CA 90210. 

Permissions 

No portion of this magazine may be reproduced 
in any form without written permission from the 
publisher. Many programs are copyrighted and 
not public domain. 

Due, however, to many requests from Atari club 
libraries and bulletin-board systems, our new poli- 
cy allows club libraries or individually run BBSs 
to make certain programs from ANALOG 
Computing available during the month printed on 
that issue's cover. For example, software from the 
July issue can be made available July 1 . 

This does not apply to programs which specifi- 
cally state that they are not public domain and, thus, 
are not for public distribution. 

In addition, any programs used must state that 
they are taken from ANALOG Computing Maga- 
zine. For more information, contact ANALOG 
Computing at (213) 858-7100, ext. 163. 

Subscriptions 

ANALOG Computing, P.O. Box 16927, North 
Hollywood, CA 91615; (818) 760-8983. Payable 
in U.S. funds only. U.S.: $28-one year, $54-two 
years, $76-three years. Foreign: Add $10 per 
year. For disk subscriptions, see the cards at the 
back of this issue. . . 

Authors 

When submitting articles and programs, both 
program listings and text should be provided in 
printed and magnetic form, if possible. Typed or 
printed text copy is mandatory, and should be in 
upper- and lowercase with double spacing. If a sub- 
mission is to be returned, please send a self- 
addressed, stamped envelope. 

For further information, write to ANALOG 
Computing, P.O. Box 1413-MO, Manchester, CT 
06040-1413. 

JE Publishers Representative 

6855 Santa Monica Blvd., Suite 200 
Los Angeles, CA 90038 

Los Angeles — (213) 467-2266 

San Francisco — (415) 864-3252 

Chicago — (312) 445-2489 

Denver — (303) 595-4331 

New York City — (212) 724-7767 



JULY A.IM.A.L.O.Q. Computing 



COM-DOS 

Plus 



I want you to know that I typed in and en- 
joy using COM-DOS, which was featured in 
your June 1988 issue. Unfortunately, this ver- 
sion formats disks only in single density, and 
I have a 1050 drive and like to use enhanced 
density. 

Through a fortunate error on my part, I 
now have a version of COM-DOS that will, 
to my great delight, format in enhanced den- 
sity. Here is how it happened. In your July 
1988 issue, there appeared a short binary pro- 
gram called Boot Directory. I placed this on 
my utility disk with DOS 2.5. I wanted to try 
it out under COM-DOS, so I placed a disk 
with COM-DOS on it in my drive and ran 
Boot Directory, which was still in memory. 

Since the disk operating system was DOS 
2.5, the Boot Directory file rewrote DOS 2.5 
to my COM-DOS disk; thus my COM-DOS 
became enhanced. The DUP.SYS that accom- 
panied COM-DOS works along with the en- 
hanced version as if nothing happened. I was 
shocked and surprised to see "999+ FREE 



SECTORS" when I formatted a disk with 
what I thought was my old version of COM- 
DOS. 

Thanks, ANALOG, for supplying the pro- 
grams that make my computing more 
enjoyable— even when I foul up. 

—Ed Thoma 
Georgetown, PA 



A Plea 
to Abacus 



For quite some time I have wanted a FOR- 
TRAN compiler for my 130XE. To my 
knowledge one does not exist. Recently, I 
came across an article about a company 
called Abacus that sells a FORTRAN-64 
compiler for the Commodore 64. I thought 
that if such a compiler could be written for 
a C-64, maybe one could be written for an 
Atari 8-bit. The response from Abacus was 
a very cold "we have never written anything 
for the Ataris and never will." Perhaps if they 
were to receive a truckload of letters from in- 



terested Atari users, their attitude would 
change. The address is 5370 52nd Street SE, 
Grand Rapids, MI 49508. 

-Bill Tart 
Houston, TX 
Actually, it 's not true that Abacus has never 
written anything for Ataris. They don't have 
any products for the 8-bit computers, true, 
but they have an excellent set of books for 
people who own STs. 



The Dark Side 



I am tired of the gloom and doom coming 
from the pages of your magazine. I have just 
read another article on the fine programs of 
the "past." In the previous issues I have read 
a few articles telling me of the hatred between 
the users of the older line of computers and 
the newer STs. 

I am writing this letter using The Writer 's 
Tool. This program helped me get through 



JULY A.M.A.L.O.Q. Computing 



COMMENT 



college. I learned how to program by using 
Atari BASIC and now use BASIC XL. I use 
Chessmaster 2000 daily to stay ahead of my 
fellow chess players. The list of great game 
software is endless. 

Because of Atari's computers, OSS's and 
other third-party software, and books and 
magazines such as yours, many of us are 
more computer literate. I will be updating to 
a more powerful computer soon, but I won't 
quit using my Atari. Please keep the whin- 
ing out of your editorials and keep up the 
good work. 

—Chuck Yates 
Memphis, TN 

Whining? Hey, we don 't make the world the 
way it is, we just live in it. If you don 't want 
us to talk about "old" software, (much of 
which, I might add, is new to a majority of 
our readers, since they haven't had their 
computers that long), and there aren't any 
new products to talk about, what software 
should we cover? The large majority of let- 
ters we get would also be classified as ' 'whin- 
ing ' ' by you. The number of these letters tells 
us that there's a problem out there, one that 
ANALOG Computing surely didn't create. 
The real questions are: Do we ignore the sit- 
uation? Or do we report on it? 



Double-sided 
Disks? 



Game Design 
Fan 



I was pleased to see the what and the how 
of Atari's XF551 brought to light, but one 
minor error caught my eye. In his review Mr. 
Ratcliff attributes the XF551's inability to for- 
mat double-sided disks to an intentional de- 
sign consideration on Atari's part. Not so. As 
the owner of an ATR8000 (remember those?), 
I discovered long ago that standard drives will 
not format disks without a timing hole (un- 
like the 810 and 1050 drives, which use an 
internal timer). 

This proves once and for all that the XF551 
does indeed use a standard mechanism, and 
that the formatting limitation is not the result 
of any kindheartedness by Atari. On the few 
occasions when I've absolutely had to format 
a double-sided disk, I've found it is indeed 
a feasible, if somewhat dicey, proposition to 
create a second index hole in the disk jacket 
with a hole punch (taking care to line up the 
puncher with the hole already in the disk 

itself). 

—Clay Halliwell 
Springfield, MO 



I have owned my Atari 800XL for about 
three years, but I had owned an Atari 600XL 
for about two years before that. When I got 
these computers, I was interested in playing 
and writing game programs. So when I saw 
that ANALOG had the Game Design Work- 
shop, I decided to check into it. I was in- 
troduced to Player/Missile Graphics earlier, 
but I only understood a small amount of it. 
When I read GDW it answered a lot of ques- 
tions I had. 

GDW is helping me design my first BA- 
SIC game, so please go back in your files and 
bring out old articles that will help me bet- 
ter understand my computer. 

Also keep putting those wonderful game 
programs in your magazine, no matter how 
long they are. I love them. 

—Dennis Debro 
Birmingham, AL 

We thank you for your kind words. Hope- 
fully, many other readers also found the 
Game Design Workshop to be a helpful 
series. 



JULY A.N.A.L.O.O. Computing 



§ 







by Dave Arlington 



Ever since the dawn of time (well, at least since the beginning of 
Atari 8-bit computers), one of the most popular type of utility pro- 
grams for the Atari has been the character set editor. Every Atari 
magazine worth its salt has published at least one, and several com- 
mercial ones have existed as well. One of the best was Create- 
A-Font by Vince Erceg published here in analog a long while back. 
Equal or exceeding in quantity are the programs that use redefined 
character sets. In addition to using them in your own programs, many 
public domain and commercial programs exist that employ them. The 
result, for most Atari owners, is a vast collection of character sets— if 
you're like me, you've ended up with a disk containing 40-50 different 
fonts. To make things worse, many have confusing or similar names. 



JULY A.M.A.L.Q.Q. Computing 




I had fonts called STANDARD, ATARI, ROM, and DEFAULT that 
I had a sneaking suspicion were all just the standard built-in Atari character 
set. You might also have FANCY1, FANCY2, FANCY3 and FANCY4, 
or maybe ARCHAIC, ANCIENT, ROMAN and ARABIC, all sounding 

similar. continued on page 44 



ARABIC 

ABCDEFGHIJKLMMQPGRSTUVMHYZQI23 456 7 89 
abcdefqhi jklwnopgrstuvwxyz 

BLOCK ~~ 

ABCPfif OH1JK1HWOPORSIUVMKYZ0123456789 
abcdef«jhi jkimioi><tt'stMvwxyz 

hC JEO EFCUJI LM CFGFSTLl ^/ , . ICi2345E-£9 

dfacde fgh i jk lfrsppgrstuv^xyz 

[hhi III T I1L — ' 

HBDBEFGHI J KL rtHQPQftS T IKIUKVOT I ttUBhV&H 

abcdefghi jkiwnopgrstuvwxyz 

HBGQEFGH i J Hi t1NQPqB5TlHJl4H¥ZD 1 SSUS&Pfl^ 
abcdefghjifi Mfigpgrstmjwx*jz 






START 



/Triqqer to Quit 



JULY A.IM.A.L.O.Q. Computing 



A few weeks ago I was watching Nova 
on public television. The program 
was about chaos; no, it was not about 
freeways or politics, but about the 
chaos that is being discovered in 
physics. Many physical events, which were 
once thought to be governed precisely by ele- 
gant mathematical formulas, are now seen to 
contain chaotic events. But before I get into 
the physics of planetary motions or some- 



for 24 hours or so. 

One would expect that once the dots got 
within the triangle, all the rest of the dots 
would stay inside the triangle (true), and that 
eventually the area inside the triangle would 
be solidly filled with dots (not true). 

I thought this was interesting, but had no 
desire to spend 24 hours to find out. I there- 
fore turned to my trusty 130XE to do the 
work for me. After a little bit of thought, I 



CHAOS 



by Alfredo L Acosta 



thing, I'd best get back to the program. 

The first example of this chaos was in the 
form of a game. A person was to take a sheet 
of paper and put three dots on it in the shape 
of a triangle. These points would be num- 
bered 1,2 and 3,4 and 5,6. Then a new point 
on the sheet would be randomly selected and 
a dot placed there. The person would then 
roll a single die. Let's assume that the num- 
ber rolled was 4. A new dot would then be 
placed one-half the distance between our last 
dot and triangle corner 3,4. The die would 
then be rolled again and yet another dot 
would be generated from our new point. 
These dots would be continually generated 



figured out a way to accomplish this in BA- 
SIC. After a little more thought and ex- 
perimentation with the computer, I came up 
with the main routine of the program. I then 
dressed it up a bit with an informational 
screen and a screen dump. Short and simple. 
I hope you all enjoy this little program. 
While you watch the points being plotted, 
consider at what you are looking: order out 
of chaos! 



Alfredo L. Acosta is a biologist working for 
the state of California. He has been program- 
ming for about six years. 

continued on page 57 



JULY A.M.A.L.D.G. Computing 







NEWS 



HUTOMKTgD TiLLlH PKOOHRM 


»*^ 1 L H^FHTFI 1 


eh" r""*— i 




-•^■■L, 




— 


"^^W|fT3 




~ 


MrUlt Oi I'll'. 1 I P M.i Mill', 
1 ll« fill |«4 ; i | u 1 1 : |»H 1 T 1 : i"»i*,t ' 1 1 I | 


N ! i i 
III-! 1 ' 1 ' 1 ! MM 1 1 




■ 






■ 
J" 


miii 1/1/89 JJ $0.00 


m 


m 




— « 


] 


1 

1 M.I' (VI! 'DM |.i: | ! lli'.'i: ) i Mi" 


■ 




:„.::" 






H 




1 



New Home Productivity 
Software 

JVB Software has released Laserteller, an 
all-in-one program that includes the ability 
to handle a checking and savings account, as 
well as keep an on-disk note and address 
book. Modeled after ATMs (automatic teller 



machines), the program allows you to quickly 
handle checking transactions. It also includes 
a "core" version of the program that lets you 
enter deposits and withdrawals, or check 
previous entries, without having to load the 
entire program. 

Laserteller s graphics are unusual for a 
home-productivity program, with each screen 



looking like a futuristic ATM. The program 
sells for $14.95 plus $2.50 shipping and 
handling. 

JVB Software 

6538 Hazeltine Avenue 

Van Nuys, CA 91401 

CIRCLE #111 ON READER SERVICE CARD. 




JULY A.IM.A.L.O.Q. Computing 




NEWS 



BBS Listing 



Now available from Bubeck Publishing is 
the 7959 BBS Bible, a comprehensive listing 
of almost 5,000 bulletin-board systems through- 
out the country. According to Bubeck Pub- 
lishing, "The goal of the 1989 BBS Bible is 
to make BBSs more accessible, both to those 
who already use them and those who have 
a computer and a modem but haven't yet con- 
tacted any. There is no other such publica- 
tion available today." 

Also included in the book are articles on 



accessing BBSs, low-cost long-distance ser- 
vices, modems, computer viruses and other 
topics. 

The BBS Bible will be updated annually 
and is available for $24.95 plus $3 shipping 
and handling. (Pennsylvania residents must 
add $1.68 sales tax.) 

Bubeck Publishing 
P.O. Box 104 
Collegeville, PA 19426 
(215) 287-6356 

CIRCLE #112 ON READER SERVICE CARD. 



More No Frills 

No Frills software has just released their 
second program for the Atari 8-bit computers. 
Called PS Users Utility Disk, the package not 
only includes various utility programs for use 
with Print Shop, but also two complete print- 
ing utilities for creating labels, bookmarks 
and coupons. 

Some of the Print Shop utilities include an 
icon viewer, which can load up to four icons 
at a time; an icon cataloger, which will print 
icons to Epson- and Prowriter-compatible 
printers; a font cataloger; a border cataloger; 
and a utility to delete, undelete or rename 
Print Shop files. 

The PS Users Utility Disk sells for $29.95 
plus $2.00 shipping. 

No Frills Software 
800 East 23rd Street 
Kearney, Nebraska 68847 (308) 234-6250 
CIRCLE #113 ON READER SERVICE CARD. 



APX Program Now Shareware 

Mastermatch, a board game requiring logic 
and concentration, was originally released by 
the now-defunct Atari Program Exchange 
(APX). This program, which is a version of 
the popular puzzle game, Mastermind, origi- 
nally sold for $24.95. It has now been given 
an extensive upgrade and is available as 
shareware. 

Anyone interested in obtaining this pro- 
gram, along with complete documentation 
should contact Chuck Mullally at the address 
given below. Note that, because it is share- 
ware, this program may be copied and free- 
ly distributed, though the author requests a 
$10 donation from anyone who enjoys the 
program and who would like the complete 
documentation. 

Chuck Mullally 
2925 Scenic Drive 
Muskegon, MI 49445 

CIRCLE #114 ON READER SERVICE CARD. 



JULY A.N.A.L.O.G. Compucing 



13 




by Frank Cohen 



DRAM Solutions 



"The DRAM crisis is over," said Sam 
Tramiel, president of Atari Corp, at last fall's 
COMDEX computer trade show in Las Ve- 
gas, Nevada. The limited supply of ST com- 
puters in the U.S. has been linked to a 
worldwide shortage of memory chips, Dy- 
namic Random Access Memory (DRAM) 
chips. The ST depends on large numbers of 
these special high-capacity memory chips. 
American protectionist legislature and sup- 
ply restrictions by the Japanese electronics 
cartel MITI caused a worldwide shortage of 
DRAM chips in 1988. The result was a 500% 
increase in DRAM chip prices, and the limit- 
ed availability of STs in the US. 

The solution to Atari's supply problems 
seems to have been worked out. Tramiel told 
of three contracts with major DRAM-chip 
manufacturers to insure an adequate supply 



of memory chips during 1989. Unfortunate- 
ly, this does not lower the price of DRAM 
chips; it only insures availability. 

520ST owners have been stunned to find 
the economic reality of the DRAM crisis. 
DRAM prices have put several ST computer 
memory-board-expansion manufacturers out 
of the market. E. Arthur Brown Company, 
formerly the manufacturer of a two- and four- 
megabyte expansion board for the 520 and 
1040 ST, discontinued their memory board 
because of the limited availability of DRAM 
chips. Brown also noted that the high price 
kept customers from taking the plunge. 

One solution to the DRAM crisis is to use 
surplus DRAM chips, which are found in 
close-out lots from chip manufacturers, re- 
moved from old computers, and taken from 
faulty memory boards. Although surplus 



DRAMs are not as reliable as new guaran- 
teed chips, yields of good chips make up for 
the time and effort required to get the sur- 
plus chips. California Development Labs has 
developed a portable DRAM-chip tester for 
this purpose. 

The RT1 is a hand-held battery-powered 
DRAM-chip tester that weighs less than one 
pound. A nine- volt Alkaline battery powers 
the unit. Inside the RT1 is a microcomputer 
system that can test and find faulty DRAM 
chips. 

Some DRAM-chip suppliers have become 
sneaky. You might find a DRAM chip marked 
as a 256K chip, when in reality it is a 65K 
chip. The RT1 identifies all types of 64K, 
256K and one-megabyte DRAM chips, in- 
dicating the chip's actual internal configura- 
tion on several LED indicators. 



JULY A.N.A.L.O.G. Computing 



Use of the MIDI 

ports for LAN 

transmissions is 

attractive 
because of the 

low cost of 

MIDI cables. 

However, there 

are additional 

ports which 

might result in 

faster LAN data 

transmission. 



The RT1 is easy to use. Just plug a DRAM 
chip into the RT1 socket and press TEST. An 
audible alarm and a couple of LED indica- 
tors tell you within five seconds if the DRAM 
chip is good or bad. 

California Design Labs 
18323 Parthenia Place 
Northridge, CA 91325 
(818) 885-0058 



Local Area ST 



Atari continues to call the ST a business 
machine, and the rest of the world ignores 
it. Why is Atari's claim of the ST as a busi- 
ness machine taken so lightly? Because the 
ST lacks two vital ingredients: expansion 
slots and local area networking (LAN). The 
IBM PC is virtually swimming in expansion 
boards that add extra memory, hard-disk con- 
trollers, and other external hardware expan- 
sion boxes. Now consider for a moment that 
the most popular hardware expansion for the 
ST is a monitor A-B switch box and a bag 
of springs to stiffen the keyboard. 

LAN provides a seamless interface be- 
tween several computers. To the computer 
user, a distant computer's hard disk appears 
as just another device on the user's desktop. 
When a file is read, the LAN sends and 
receives messages across a transmission line 
between the two computers. LAN software 
patches itself into the deepest part of the oper- 
ating system, so it works transparently with 
all applications, such as word processors, 
spreadsheets, databases, etc. 

Several attempts have been made at creat- 
ing a LAN for the ST computer. John Demar 
of QMI began writing ST NET in 1985. 
DeMar's system used the MIDI ports to 
communicate information between ST sys- 
tems. From the GEM Desktop, a floppy dis- 
kette appeared as another disk icon on a 
networked system. If completed, ST NET 
would have become the most popular net- 
working system. ST NET has not been com- 
pleted due to several technical constraints. 

DeMar found himself trying to pry open 
an operating system locked into read-only 



memory (ROM). The TOS operating system 
was not designed with a LAN in mind, so 
patching TOS is a very complicated matter. 

The second difficulty was in using the 
MIDI ports as a communication system. 
DeMar found the transmission time to be too 
slow. MIDI transmits data at 31.5 thousand 
bits per second. When transmitting a file of 
10,000 bytes, STNETtook more than 40 sec- 
onds to complete the transmission. This 
might not seem very slow, but a file copy 
function of 10,000 bytes takes less than five 
seconds to complete. 

A new version of TOS, the ST's ROM- 
based operating system, has recently been 
released to ST developers. DeMar is once 
again looking into the operating system to see 
if a software-based LAN can be created us- 
ing the new TOS. If the software can be creat- 
ed, the only other obstacle will be the 
physical connection between ST computers. 

Use of the MIDI ports for LAN transmis- 
sions is attractive because of the low cost of 
MIDI cables and not having to build a hard- 
ware interface board for the ST. Just plug two 
$5 MIDI cables between two or more STs and 
you have a LAN. However, there are addi- 
tional ports which might result in faster LAN 
data transmission. 

The ST floppy-disk drives are serviced by 
a high-speed floppy-disk-drive controller. 
Data transmission rates go up to 32 microsec- 
onds per byte across the floppy-disk-drive 
cables, about 1,000 times faster than the 
MIDI ports. The ST floppy-disk controller 
chip is also much more reliable than the 
MIDI port controller in data transmission. 

The idea of using the floppy-disk controller 
as a LAN manager is a practical one. The 
data rate is high enough to be competitive 
with MS-DOS LAN systems, and the soft- 
ware should be straightforward. 

Frank Cohen has been developing Atari pro- 
grams since his first commercial product, Clowns 
& Balloons. He later developed Regent Base, 
an SQL 4GL database, and is currently in- 
volved with several other ST-related produc- 
tivity and small business software packages. 
You may contact Frank directly on Compu- 
Serve (76004J573) or Genie (FRANK.COHEN). CI 



JULY A.IM.A.L.O.Q. Computing 





ASTER 



by Bryan Schappel & Barry Kolbe 



Have you ever had the urge to snoop 
around your disks? To see how files 
are stored on a disk? Or, to try to 
cheat at your favorite text adventure? 
Did you ever want to disassemble 
a few disk sectors or a file that you could not 
load into memory? If you would like to do 
these things then Disk Master is for you! 

Disk Master (DM) is actually two pro- 
grams in one. The editor allows you to exam- 
ine and edit any sector on a single-density or 
1050 double-density disk. The disassembler 
allows you to disassemble sectors or files 
(with or without labels) and send the output 
to the screen, printer or a disk. 



Typing It In 



Type DM (Listing 1) using the M/L Edi- 
tor found elsewhere in this issue. Use the bi- 
nary load option of your DOS to load and run 
DM. It would be best to remove any car- 
tridges and/or disable BASIC on XL/XE 
models. 

The Disk Editor 

As you will see, the screen is divided into 
two sections: a section that is filled with num- 
bers and a section filled with characters. This 
area displays all the data in one disk sector. 



There are 128 bytes in each sector- 
numbered from to 127 (00-7F in hexa- 
decimal). The left margin and the top of the 
screen have guide numbers to cross-reference 
the data. When you begin, the buffer that 
holds sector data is full of 0s, which you will 
see as hexadecimal 00s. To the right of the 
data is an 8 by 16 array of hearts. These are 
the ATASCII equivalents of those 0s. Below 
is information about the sector: 

SEC: This is the current sector number dis- 
played in hexadecimal. 

FIL: This is the DOS 2.x file number. The 
file number ranges from 0-3F, for a maxi- 
mum of 64 files per disk. 

LNK: This is the DOS sector link. This 
number is the pointer to the next data sector 
in a file. This number is invalid on a boot 
disk (such as a game) and the directory 
sectors. 

BYT: This number tells DOS how many 
bytes of actual data are contained in the sec- 
tor. This number typically ranges between 
and 125. 

SRC: This is the source drive that DM uses 
to read all data from while in the editor. 

DST: This is the destination drive that DM 
will write all information to. Note: The 
source and destination may be different; this 
allows users with multiple-drive systems to 
read from one disk and write to another. 



INP: This tells you how your input will be 
interpreted. If the flag is set to "H," all in- 
put will be interpreted as hex strings; other- 
wise the input will be interpreted as character 
strings. 

What is a hex string? Well, a hex string is 
simply input that is made up of hexadecimal 
digits that represent ATASCII characters. For 
example, the hex string "414243" is the same 
as the character string "ABC." 

So, why do we use hex strings? Because, 
a hex string allows you to enter characters that 
you normally can't, like the EOL (ATASCII 
155, $9B) and the delete keys. You will find 
a use for hex strings when you want to search 
for data on a disk. 

A note on hex string interpretation: As you 
may have noticed, it takes two hex digits to 
represent one character, so what happens if 
you enter an odd number of digits? Well, an 
extra is added to the beginning of your in- 
put, so, "1FE" becomes "01FE." We felt that 
this was the natural way to interpret the hex 
string. 

DNS: This shows you which density the 
program is operating in. A 1 indicates sin- 
gle density, and a 2 indicates 1050 double 
density. 

You may activate a built-in help screen by 
pressing the "?" (use Shift-/). The help 
screen lists all of the command keys along 

JULY A.IM.A.L.O.B. Computing 



with their associated function. Here is a brief 
description of each command. 

Read a sector (R): Pressing "R" allows you 
to enter a sector number for DM to read into 
its memory buffers. This number may range 
from 1-2D0 in single density and 1-410 in 
1050 double density. Simply press Return to 
reread the current sector. 

Up one sector (+): This will increase the 
current sector number by 1 and read it into 
memory. If you are on the last sector of the 
disk, DM will keep reading it. 

Down one sector (-): This reads in the sec- 
tor before the one you're on. You may not 
read Sector Zero. 

Edit sector (E): The edit routine requires 
two pieces of information: the starting byte 
and the new data. At the EDTB prompt, enter 
the starting byte number of the edit, and at 
the EDTD prompt, enter the data. 

The data will be entered according to the 
INP flag. Additionally, character strings will 
be converted to either internal code or ATAS- 
CII depending on the setting of the charac- 
ter display mode (see the C command). 

Write sector buffer (W): You are asked for 
the sector number to write the sector to, or 
you may press Return for the current sector. 
You are asked if you are sure before the write 
occurs; pressing Escape or "N" will abort. 
If you write the buffer to the current sector 
you may use Undo to restore the buffer and 
rewrite the buffer back to disk. If you used 
a different sector number you cannot restore 
the sector's original contents. 

Undo (U): This restores the sector buffer 
contents to what they were when the sector 
was first read. 

Number Base (N): This allows you to 
change the number base that is used to dis- 
play the sector data. The default mode is 
hexadecimal— pressing this key toggles be- 
tween hex and decimal. 

Decimal numbers are displayed using only 
two digits. If the left digit is inversed, then 
add 200 to the number displayed. If the right 

JULY A.IM.A.L.O.Q. Computing 



If you write the 

buffer to the 

current sector 

you may use 

Undo to restore 

the buffer and 

rewrite the 

buffer back to 

disk. 



digit is inversed, add 100 to the displayed 
number. If no digits are inversed, then the 
number on screen is the actual value. 

Character Display (C): This toggles the 
character display array from ATASCII to in- 
ternal code. The setting of this array is used 
to interpret your character-string input dur- 
ing searches and edits. 

Block fill (B): This command fills the sec- 
tor buffer with a hex byte, just enter the value 
and, wham!, the buffer is filled. (Excellent 
for erasing sectors; just use the value 00.) 

Exclusive OR sector contents (J): This will 



perform a binary EOR on every byte in the 
sector with a value that you supply. This can 
be useful when some data has been encrypt- 
ed in a sector. To recover from an EOR, just 
perform the EOR again with the same value. 

Trace link (T): This will read in the sector 
pointed to by the LNK field. Use this com- 
mand to follow a disk file. 

New file number (F): This allows you to 
change the file number on the current sec- 
tor. You are asked for the new file number; 
remember that only values 0-3F are allowed. 
You will receive an Error 181 if the value is 
out of range. 

New sector link (L): This allows you to 
change the sector link on the current sector. 
Only values 0-2D0 (single) and 0-410 (dou- 
ble) are allowed. An Error 180 will be given 
if the new link is out of range. 

Density toggle (V): Pressing "V" toggles 
between single and 1050 density. Having this 
set incorrectly cannot damage your disks in 
any way. 

Main menu (M): This command just 
returns you to the main menu allowing you 
to enter the disassembler or exit to DOS. 

Search for data (S): This command 
searches the current sector for data you enter. 
Remember that your input will be interpret- 
ed according to the INP flag. If the data that 
you are searching for is found, a "<" is 
placed on the screen at the beginning of each 
occurrence. This command only examines 
the current sector, so if you want to search 
another sector for the same data, just read 
in that sector and hit Return at the SRCH 
prompt. You may also want to clear the screen 
before doing another search (use Control- 
Clear to redraw the screen). 

Hex to decimal (H): This converts a hexa- 
decimal number to its decimal equivalent. 
Only values of 0-FFFF are allowed. 

Decimal to hex (.): This converts a decimal 
number to its hex counterpart. Only values 

continued on page 27 

17 





"IB 



JULY A.IM.A.L.O.B. Computing 




. .. h,';il> 



mwwm>.<- W&W4 msn^m^ w^m^- -, 

ri^vA^'>' '■ ' v'/^7. /*.,;/!■.-;/ ^vf'^Lv/ 1 . ■'■■ V- ■ >„■ ' '■ \K> ■ ? ■ .■■■ .i. V ' 
»«J9EFi«£v a"V ■;<>&•■ • e%\'*l'-$ V'fr/P', riJv-5:'' -•■ %■ ■' ■.;.?,-■■ ■■...:■ 

i ■/$>. '>/*■ '',- 'm'vi'v 4? 'I?:j. l-'W , ,4 , * ; .',<•■..•;- •. ■ ■ g . ;'■■■' 

M^&^ir •IfsHk- .^^.tf :■>.■■■< . , .-;;-;>.;;,•; 
W^^W:^' ■ ■■ ' :/i ',■>■*■ ' : - ■ ?/-v.r;-r.{,;: v .. *, /, ; s. 

./>',', ill!.- •'•* v.;- .,!,, ., '-,•,■, ,.;.*-: ■ ' >M ', ■ , '■. •'.;.'•",• .-■■"•"' 




The Atari ST can do some pretty amazing things. But many of us 
still cling to our faithful 8-bit machines, not wanting to give up 
such a good friend despite the enticements of the powerful, graphic- 
ally exquisite Atari ST. Still we are curious. How can we get a 
peek at what the ST can do without purchasing one, or going to 
the local dealer (if that is even remotely possible) to peruse their wares, 
or reading about it in one of those ST magazines that we don't usually 
purchase? 

DEGAS View (the first word is pronounced day-GAH) brings the ST's 
highest-resolution graphics capabilities to the Atari 8-bit machines, without 
dropping a single bit. 

DEGAS by Tom Hudson is the most popular graphics art package for 
the Atari ST. With it, art work can be created in 320 by 200 pixels with 
16 colors, 640 by 200 with four colors, or 640 by 400 with two colors. 
This last mode is similar to graphics mode 24 (8 + 16) on the 8-bits, which 
is 320 by 192 with two colors. If we were to load up a DEGAS high- 
resolution graphic and throw away every other pixel horizontally and 
every other scan line, or three-fourths of the image, we could display 
part of a DEGAS picture on a graphics 24 screen. 



JULY A.N.A.L.O.Q. Computing 



13 



What if we didn't throw any of the picture 
away, but split it into four separate pages? 
Each page could be stashed in a separate bank 
of memory on a 130XE (or compatibly ex- 
panded 800XL, 65XE or XEGS). Then we 
could simply flip through the four pages as 
fast as possible, to create a continuous im- 
age that appeared to be 640 by 400. 

This is what DEGAS View does. It will load 
uncompressed DEGAS high-resolution 
(monochrome, as they are sometimes called) 
pictures, sort them into separate memory 
banks, and display the banks with a technique 
referred to as page flipping. 

Where can you find DEGAS files? I have 
accumulated some DEGAS pictures in this 
format and placed them in the Koala pictures 
database on DELPHI in the Atari 8-bit area. 



Typing It In 



Listing 1 is the data needed to create your 
copy of DEGAS View. Type this data using 
the MIL Editor, found elsewhere in this is- 
sue, creating the file under the name 
DEGASVUF.OBJ. Listings 2 3 and 4 are the 
MAC/65 source code for DEGAS View. These 
listings do not need to be typed; they are 
provided only for those people interested in 
assembly language programming. 

Using the Program 

Load DEGASVUEOBJ from DOS. No ex- 
ternal cartridges should be installed, and in- 
ternal BASIC should be disabled. When run, 
DEGAS View first prompts for a drive num- 
ber. Simply press Return to accept the default 
of 1, or type the drive number and press 
Return. A directory of all files with an ex- 
tender of ,PI3, the standard for all DEGAS 
high-resolution picture files, will be listed to 
the display. Press Escape twice and then 
Return to abort the program and return to 
DOS. Press Return only to enter a new drive 
number. 

Type the name of the DEGAS file you wish 
to view and press Return. There is no need 
to specify the drive number or extender, if 
the current default drive and extender (.PI3) 
are valid. If the file is not found, or a load 
error occurs, the problem is detected and DE- 
GAS View will restart. 

DEGAS View will immediately begin load- 
ing the picture file. It will perform the neces- 



sary bank switching as the information is 
decoded and displayed. There will be "snow" 
on the display as data is fetched from disk. 
This will not cause any problems, however. 

When the file has been completely load- 
ed, the display routine is activated. Sixty 
times a second, after each vertical blank in- 
terrupt (VBI), one of the four pages is dis- 
played. This results in a 640 by 400 display 
fifteen times a second. The image will flick- 
er, but your eyes will "average" the informa- 
tion and see a complete picture. At this point 
several key commands will allow you to ex- 
periment with the display. 

Sometimes the image will appear to be a 
"negative." When this happens, press the 
space bar, which toggles between a normal 
and inverted display. 

To see the individual components of this 
four-part image, press one of the number keys 
1 through 4. Each number key will select the 
associated page and display it without any 
screen flipping. By rapidly typing the keys 
in sequence it can be seen how the pages fit 
together to create a high-resolution image. 

Sometimes only half of the image will be 
enough resolution to see the whole picture. 
Press the H key to see half the data. This will 
cause DEGAS View to flip through pages 1 
and 3 only, resulting in an effective display 



is completely drawn by the display hardware. 
These "interruptions" will create a snow ef- 
fect, similar to poor TV reception. This ef- 
fect can be more annoying than the flicker. 

To exit the fast display mode, or any of the 
static screen displays, press the N key. This 
returns to the normal display of all four 
screens at the normal rate. This does not reset 
the inverted mode, if it has been enabled. 

Press the Escape key to exit DEGAS View 
and return to DOS. Any other key press will 
restart the program, allowing you to load and 
display another picture. 

If you do not have a 130XE or expanded- 
memory XL machine, you may still use DE- 
GAS View. The effects of memory bank 
switching will be ignored by the computer, 
if it does not support it. The end result will 
be a display of one-fourth the original image. 
This allows any Atari 8-bit owner to take a 
look at DEGAS pictures. 

DEGAS View is not an ST emulator, but it 
does a pretty fair job of presenting full -screen 
Atari ST graphics on an 8-bit macm'ne. Tk<sre 
are possibilities for DEGAS View enhance- 
ments. It could be modified to save any one 
page to disk as a simple graphics-mode-8 
screen dump. It could be updated to load mul- 
tiple 8-bit screens and save them as a com- 
posite DEGAS image, allowing you to send 



DEGAS View is not an silt 



rX- >P 



..('•V v'-\ ■ '-i« 






resenting 



is not aniji 



es a :prettwt^i^/0f0 




rate of 30 times per second. This noticeably 
reduces the flicker. Press the S key to see the 
other half of the data, screens 2 and 4, in the 
same manner. Try alternating between S and 
H keys, to see which display pair looks best. 

To get a better idea of what the complete 
image would look like, flicker free, press the 
F key. In this mode DEGAS View will flip 
through all four pages as fast as possible. 

This will result in page flipping before each 



your best 8-bit graphics to ST-owning friends. 
If ANALOG receives sufficient reader re- 
quests for new DEGAS View features, I will 
gladly consider upgrading this program for 

a future issue of ANALOG. 

Matthew Ratcliffis definitely an Atari ' 'old- 
timer. ' ' He has been writing about Atari com- 
puters for as long as we can remember and 
recently celebrated his one-hundredth arti- 
cle sale. He lives in Missouri. 



JULY A.N.A.L.O.G. Computing 



LISTING 1: MIL EDITOR DATA 



10OO DATA 255,255,2,58,58,58,83,58,155 

,8,72,162,96,169,12,157,4883 

1818 DATA 66,3,32,86,228,162,96,169,3, 

157,66,3,169,2,157,68,3685 

1028 DATA 3,169,58,157,69,3,184,157,75 

,3,41,248,73,16,9,12,22 

1838 DATA 157,74,3,32,86,228,96,211,58 

,215,58,112,48,79,8,64,2878 

1848 DATA 59,51,61,51,79,8,88,161,51,1 

56,52,65,211,50,8,8,645 

1058 DATA 0,0,68,49,58,78,73,76,69,78, 

65,77,69,46,69,88,383 

1868 DATA 84,155,8,68,49,58,42,46,88,7 

3,51,155,8,162,8,169,1824 

1878 DATA 15,157,216,58,232,224,99,288 

,248,162,0,157,62,51,232,224,1428 

1080 DATA 99,208,248,169,0,32,6,50,169 

,0,141,198,2,162,16,169,4335 

1090 DATA 12,157,66,3,32,86,228,76,21, 

52,168,196,229,231,225,243,2881 

1188 DATA 168,214,233,229,247,172,168, 

194,249,168,285,225,244,178,210,225,93 

48 

1118 DATA 244,172,168,168,227,169,160, 

193,238,225,236,239,231,160,155,162,76 

79 

1120 DATA 0,169,9,157,66,3,169,240,157 

,68,3,169,51,157,69,3,3662 

1130 DATA 169,37,157,72,3,169,0,157,73 

,3,32,86,228,162,0,169,4424 

1140 DATA 9,157,66,3,169,185,157,68,3, 

169,51,157,69,3,169,255,6987 

1150 DATA 157,72,3,169,0,157,73,3,32,8 

6,228,76,121,52,91,82,3159 

1168 DATA 69,84,85,82,78,93,32,61,32,7 

5,181,101,112,32,100,101,2021 

1170 DATA 102,97,117,108,116,32,115,10 

4,111,119,118,32,97,98,111,118,4627 

1188 DATA 181,46,155,162,0,169,9,157,6 

6,3,169,84,157,68,3,169,4052 

1190 DATA 52,157,69,3,169,37,157,72,3, 

169,8,157,73,3,32,86,965 

1200 DATA 228,76,188,52,68,114,185,157 

,52,152,53,118,181,32,35,32,2152 

1210 DATA 68,181,103,97,115,32,46,88,7 

3,51,32,102,105,108,181,115,2881 

1228 DATA 32,97,114,101,32,111,110,32, 

63,155,162,0,169,9,157,66,3677 

1230 DATA 3,169,154,157,68,3,169,52,15 

7,69,3,169,34,157,72,3,2550 

1240 DATA 169,0,157,73,3,32,86,228,162 

,0,169,5,157,66,3,169,3896 

1250 DATA 0,157,68,3,169,4,157,69,3,16 

9,2,157,72,3,169,0,1436 

1260 DATA 157,73,3,32,86,228,173,0,4,2 

01,155,240,3,141,186,51,6959 

1278 DATA 162,16,169,3,157,66,3,169,6, 

157,74,3,169,0,157,75,2763 

1288 DATA 3,169,185,157,68,3,169,51,15 

7,69,3,32,86,228,152,48,4631 

1298 DATA 66,162,16,169,5,157,66,3,169 

,0,157,68,3,169,4,157,2898 

1300 DATA 69,3,169,255,157,72,3,169,0, 

157,73,3,32,86,228,152,5373 

1310 DATA 48,33,162,8,169,9,157,66,3,1 

69,0,157,68,3,169,4,1562 

1320 DATA 157,69,3,169,255,157,72,3,16 

9,0,157,73,3,32,86,228,4594 

1330 DATA 76,35,53,162,16,169,12,157,6 

6,3,32,86,228,76,138,53,3671 

1348 DATA 71,114,97,112,184,105,99,115 

,32,182,105,108,101,32,116,111,4177 

1358 DATA 32,108,111,97,180,32,63,155, 



162,0,169,9,157,66,3,169,3831 

1368 DATA 114,157,68,3,169,53,157,153, 

53,148,54,69,3,169,24,157,4146 

1370 DATA 72,3,169,0,157,73,3,32,86,22 

8,76,201,53,91,82,69,4054 

1388 DATA 84,85,82,78,93,32,61,32,82,1 

01,115,116,97,114,116,44,3238 

1398 DATA 32,110,101,119,32,100,114,10 

5,118,181,155,162,8,169,9,157,5553 

1400 DATA 66,3,169,171,157,68,3,169,53 

,157,69,3,169,38,157,72,4195 

1418 DATA 3,169,0,157,73,3,32,86,228,7 

6,11,54,68,111,117,98,3816 

1420 DATA 108,101,32,91,69,83,67,93,32 

,97,118,100,32,91,82,69,1938 

1430 DATA 84,85,82,78,93,32,181,120,10 

5,116,115,46,155,162,0,169,5475 

1440 DATA 9,157,66,3,169,234,157,68,3, 

169,53,157,69,3,169,33,4051 

1458 DATA 157,72,3,169,0,157,73,3,32,8 

6,228,162,8,169,5,157,4466 

1460 DATA 66,3,169,0,157,68,3,169,4,15 

7,69,3,169,128,157,72,4502 

1470 DATA 3,169,0,157,73,3,32,86,228,1 

62,16,169,12,157,66,3,3802 

1480 DATA 32,86,228,173,8,4,201,27,240 

,7,201,155,208,64,76,217,9220 

1498 DATA 51,169,8,32,6,50,76,125,54,6 

8,181,183,97,115,32,86,2189 

1588 DATA 185,101,119,32,98,121,32,77, 

97,116,42,82,97,116,155,162,5629 

1518 DATA 8,169,9,157,66,3,169,103,157 

,68,3,169,54,157,69,3,2995 

1528 DATA 169,22,157,72,3,169,8,149,54 

,144,55,157,73,3,32,86,1975 

1538 DATA 228,96,173,8,4,162,8,168,8,1 

48,1,50,201,58,248,25,4177 

1548 DATA 173,1,4,281,58,248,18,169,68 

,141,168,51,173,186,51,141,8895 

1558 DATA 169,51,169,58,141,170,51,160 

,3,189,8,4,153,168,51,232,6785 

1568 DATA 200,201,155,240,10,201,46,20 

8,240,238,1,58,76,195,54,173,9276 

1578 DATA 1,58,288,38,136,169,46,153,1 

68,51,280,169,88,153,168,51,8423 

1580 DATA 200,169,73,153,168,51,288,16 

9,51,153,168,51,288,169,155,153,1835 

1598 DATA 168,51,162,8,169,9,157,66,3, 

169,168,157,68,3,169,51,4598 

1688 DATA 157,69,3,169,255,157,72,3,16 

9,8,157,73,3,32,86,228,4874 

1618 DATA 162,16,169,3,157,66,3,169,4, 

157,74,3,169,8,157,75,3885 

1620 DATA 3,169,168,157,68,3,169,51,15 

7,69,3,32,86,228,152,16,4408 

1638 DATA 71,76,87,55,78,185,188,181,3 

2,181,114,114,111,114,44,32,3889 

1648 DATA 112,114,181,115,115,32,82,69 

,84,85,82,78,155,162,0,169,5067 

1650 DATA 9,157,66,3,169,62,157,68,3,1 

69,55,157,69,3,169,25,3123 

1668 DATA 157,72,3,169,8,157,73,3,32,8 

6,228,169,255,285,252,2,9884 

1678 DATA 248,251,141,252,2,76,217,51, 

169,24,32,6,58,169,211,162,7194 

1688 DATA 58, 164, 20, 196, 20, 240, 252, 145 

,55,140,56,141,48,2,142,49,5135 

1690 DATA 2,169,0,133,88,169,64,133,89 

,169,288,141,8,58,162,16,5297 

1788 DATA 169,7,157,66,3,169,51,157,68 

,3,169,58,157,69,3,169,4117 

1718 DATA 34,157,72,3,169,8,157,73,3,3 

2,86,228,152,16,68,162,4535 



JULY A.IM.A.L.O.B. Computing 




1720 DATA 16,169,12,157,66,3,32,86,228 

,169,0,32,6,58,76,226,3658 

1738 DATA 55,76,79,65,68,32,69,82,82,7 

9,82,155,162,0,169,9,3188 

1740 DATA 157,66,3,169,215,157,68,3,16 

9,55,157,69,3,169,11,157,4939 

1750 DATA 72,3,169,0,157,73,3,32,86,22 

8,96,165,88,133,224,165,8931 

1768 DATA 89,133,225,169,10,141,198,2, 

169,0,141,197,2,169,4,141,5908 

1778 DATA 200,2,162,16,169,7,157,66,3, 

169,51,157,68,3,169,50,3461 

1780 DATA 157,69,3,169,160,157,72,3,16 

9,0,157,73,3,32,86,228,4579 

1798 DATA 152,16,71,162,241,142,1,211, 

169,0,32,6,50,162,16,169,4394 

180O DATA 12,157,66,3,32,86,228,76,97, 

56,76,105,108,101,32,105,3657 

1810 DATA 110,112,117,116,32,101,114,1 

14,111,114,155,162,0,169,9,157,6236 

1820 DATA 66,3,169,80,157,68,3,169,56, 

157,69,3,169,17,157,72,4096 

1838 DATA 3,169,0,157,73,3,32,86,228,9 

6,162,0,189,51,50,160,5369 

1840 DATA 4,24,42,38,226,42,38,141,56, 

136,57,227,136,208,247,24,8930 

1850 DATA 160,4,189,131,50,42,38,228,4 

2,38,229,136,268,247,232,189,3276 

I860 DATA 51,50,160,4,24,42,38,226,42, 



CLSN Pascal 

for the Atari 130XE 



o Editor and compiler are 

all in one complete, 

integrated programming 

environment - No program 

swapping 
o Compiles at 1000 lines per 

minute 
o Generates 6502 machine 

code, not pseudo code 
o Programs can be compiled 

and run from memory, or 

stored to disk and run on 

their own 
o Arrays, records, files, 

and sets are all supported 
o Recursion and dynamic 

memory allocation are 

supported 
o Interface to machine 

language subroutines 
o 48k of code, 48k of 

dynamic memory, and a 16k 

stack are available 
o Demonstration programs 

included 

To order, send $39.95 to: 
CLSN Software 
10 Arlington Place 
Kearny, NJ 07032 

N'J residents, add 6* sales tax, Canadian 
residents add $5.00 shipping and handling 



CIRCLE #107 ON READER SERVICE CARD. 



38,227,136,208,247,168,4,8466 

1870 DATA 24,189,131,50,10,38,228,10,3 

8,229,136,208,247,134,230,162,2572 

1880 DATA 193,142,1,211,165,226,145,22 

4,162,241,142,1,211,145,224,162,4359 

1890 DATA 197,142,1,211,165,227,145,22 

4,162,201,142,1,211,165,228,145,4047 

1908 DATA 224,162,205,142,1,211,165,22 

9,145,224,230,224,208,2,230,225,6434 

1910 DATA 166,230,232,224,80,240,3,76, 

136,56,206,0,50,240,18,173,7641 

1920 DATA 0,50,201,100,208,8,169,0,133 

,224,169,88,133,225,76,24,7953 

1930 DATA 56,162,16,169,12,157,66,3,32 

,86,228,162,193,168,48,165,8231 

1940 DATA 20,197,20,240,252,142,1,211, 

148,212,50,232,232,232,232,224,7223 

1950 DATA 201,208,2,160,64,173,252,2,2 

01,255,208,6,224,209,240,219,6612 

1960 DATA 208,221,162,241,142,1,211,16 

2,64,169,12,157,66,3,32,86,4587 

1970 DATA 228,162,64,169,3,157,66,3,16 

9,4,157,74,3,169,0,157,3926 

1980 DATA 75,3,76,106,57,75,58,8,169,1 

83,157,68,3,169,57,157,4720 

1990 DATA 69,3,32,86,228,152,16,13,162 

,64,169,12,157,66,3,32,2396 

2000 DATA 86,228,76,217,51,162,64,137, 

57,132,58,169,7,157,66,3,4235 

2010 DATA 169,0,157,68,3,169,4,157,69, 

3,169,1,157,72,3,169,3555 

2020 DATA 0,157,73,3,32,86,228,173,0,4 

,201,32,208,3,76,90,4182 

203O DATA 58,201,72,208,3,76,167,58,20 

1,78,208,3,76,29,57,281,5660 

2040 DATA 70,208,3,76,181,58,201,83,28 

8,3,76,144,58,261,49,268,8260 

2050 DATA 4,162,193,208,22,281,50,208, 

4,162,197,208,14,201,51,208,527 

2060 DATA 4,162,201,208,6,261,52,208,2 

8,162,205,142,1,211,162,255,2323 

2070 DATA 236,252,2,246,251,162,241,14 

2,1,211,76,135,57,201,27,208,689 

2080 DATA 78,162,64,169,12,157,66,3,32 

,86,228,76,46,58,68,101,3452 

2090 DATA 103,97,115,32,86,185,101,119 

,32,98,121,32,77,97,116,42,3333 

2100 DATA 82,97,116,44,32,40,99,41,32, 

65,110,97,108,111,183,155,4616 

2110 DATA 162,0,169,9,157,66,3,169,12, 

157,68,3,169,58,157,69,4299 

2120 DATA 3,169,34,157,72,3,169,0,157, 

73,3,32,86,228,96,162,5654 

2130 DATA 64,169,12,157,66,3,32,86,228 

,76,217,51,173,198,2,72,6470 

2140 DATA 173,197,2,141,198,2,104,141, 

197,2,76,29,57,162,193,165,7656 

2150 DATA 20,197,20,240,252,142,1,211, 

162,201,165,20,197,20,240,252,3387 

2160 DATA 142,1,211,174,252,2,224,133, 

58,215,58,255,248,227,162,241,6491 

2170 DATA 142,1,211,76,135,57,162,197, 

165,20,197,20,240,252,142,1,9864 

2188 DATA 211,162,285,165,20,197,20,24 

0,252,142,1,211,174,252,2,224,2967 

2190 DATA 255,240,227,162,241,142,1,21 

1,76,135,57,169,255,162,193,142,3445 

2200 DATA 1,211,162,197,142,1,211,162, 

201,142,1,211,162,205,142,1,280 

2210 DATA 211,205,252,2,240,231,162,24 

1,142,1,211,76,135,57,226,2,9739 

2220 DATA 227,2,195,51,0,0,0,0,0,0,0,0 

,0,0,0,0,3240 



JULY A.N.A.L.O.Q. Computing 



LISTING 2: ASSEMBLY 



10 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 

20 * DEGAS VIEW * 

38 * by Matthew J.M. Ratcliff * 

48 * * 

50 * Copyright 1989 * 

60 * BY ANALOG COMPUTING M 

70 XXXXXXXXXXXXXXXXXXXXXXXXXXMXXX 

80 * 

1000 *SAVEttD:DEGA5VUF.M65 

1010 *ASM,tt-, ttD:DEGASVUF.COM 

1020 * Degas *FULL* View, by MatKRat 

1OS0 * 

1040 * This progran will load a degas 
1050 * high resolution, .PI3 fornat 
1060 * picture file and display 1/4 
1070 * of it on 4 different pages 
1080 * of 130XE Cor compatible upgrade 
1090 * upgrade XL) , in Graphics node 8 

* The software will then FLIP thr 



then as fast as possible. Other 
keyboard control options are 
as follows: 

— Key connands — 
1 - Display 1/4 of graphic, 1st 



second page 

third page 

fourth page 

full display speed, not rea 



lioo 
ough 
1110 * 
1120 * 
1130 * 
1140 * 
1150 * 
1160 * 

page 
1170 * 2 
1180 * 3 
1190 * 4 
1200 * F 
1 useful 

1210 x- H - show half inage, alternate 
screens 1 & 3, 30 Hertz 
1220 * 5 - show half inage, alternate 
screens 2 & 4, 30 Hertz 
1230 * N - Nornal display, show all 4 
screens, 15 hertz 
1240 * SPACE - Invert display, show at 

nornal speed 
1250 * screen will stay invert 
ed, until inverted again 
1260 * RETURN - Exit to na i n Menu for 
another picture selection 
1270 * ESCAPE - Exit progran 
1280 * 
1290 * At filenane input pronpt, press 

E5C twice, then return 
1300 * to exit fron there 
1310 * 

1320 * >>>BEWARE<<< Don't expect to r 
un 
1330 * this with SpartaDOS X Cartridge 

1340 * SDK likes all those RAM banks. 

1350 * Go nucking about with then and 

1360 * you are going to CRASH dude! 

1370 * Important addresses for 

1380 * loader progran: 

1390 ESCAPE = 27 

1400 SCREEN = $E0 

1410 * Byte splitting registers 

1420 SHIFT1 = $E2 

1430 SHIFT2 = $E3 

1440 SHIFT3 = $E4 

1450 SHIFT4 - $E5 

1460 SAVEX = SE6 

1470 BANKSCR = $4000 ; 16K IS ADDR 

1480 BANKSCR1 = $5080 

1490 5CAN1 = 99 

1500 SCAN2 = 99 

1510 * Page bank select values 

1520 PAGE1 = 193 

1530 PAGE2 = 193+4 

1540 PAGE3 = 193+8 

1550 PAGE4 = 193+12 

1560 MAIN = 241 

1570 * Bank select register 

1580 BANK5EL = 54017 

1590 BLANK4 = 48 

1600 BLANK5 = 64 

1610 .ORG $3200 

1620 LINECOUNT .BYTE 

1630 EXFLG .BYTE 

1640 .OPT OBJ 

1650 * Mat*Rat"s custonized systen equ 

ates 



1660 .INCLUDE HD : SYSEQU . M65 

1670 * Mac/65's 10 Macros library 

1680 .INCLUDE «D : IOMAC . LIB 

1698 * Matx-Rafs Graphics routine 

1700 .INCLUDE «D: GRAPHICS. M65 

1710 * 2 line graphic buffer 

1720 BUF160 .DS 160 

1730 * Custon display list work area 

1740 DISPLAY .BYTE 112,48,79 

1750 .WORD BANKSCR 

1760 DLA .DS 5CAN1 J 15'S GO HERE 



1770 

Y 

1780 

1790 DLB 

E 8 LINES 

1800 



BYTE 79 



SKIP 4K BOUNDAR 



WORD BANKSCR1 
, DS SCAN2 ; ANOTHER 104 MOD 



.BYTE 65 
.WORD DISPLAY 
■BYTE 0,0,8,8 
* Working filenane for parsing 

BYTE "D1:FILENAME.EXT",155 



1810 

1828 

1830 

1840 FILEN 

,0 

1850 * Default directory spec 

1860 FIL5PEC .BYTE "Dl :*. PI3", 155, 

1870 M Initialize custon, 200 line 

1880 * graphics node 8 display 

1890 * list for starters 

1900 INIZ LDX HO ; Setup display 1 

ist 

1910 LDA »15 

1920 INIZ1 STA DLA,X 



1930 
1940 
1950 
1960 



INK 

CPX ttSCANl 

BNE INIZ1 

LDX BO 



1970 INIZ2 STA DLB,X 



1980 
1990 
2000 
2010 
2020 



2030 START 



INK 

CPX H5CAN2 

BNE INIZ2 
Clear screen, show title 
and Start DEGAS VIEW progran 



2040 
2050 
2060 
2070 
2080 
2090 
2100 
2110 

2120 
2130 







GRAPHICS 
LDA ttO 
STA 710 
Get drive nunber first 
or accept default displayed 
by pressing return only 

CLOSE 1 

PRINT ■ "BTF na'm'iBai im 



PRINT 
PRINT 



fault shown above." 



0,FIL5PEC 
0, "[RETURN! 



Keep de 



2140 



files are on ?" 



PRINT 0, "Drive tt Degas .PI3 



2150 
2160 
2170 
2180 
2190 
2200 
2210 



INPUT 0, FILENAME, 2 

LDA FILENAME 

CMP ttl55 

BEG NONEWDR 

STA FIL5PEC+1 
Open a directory listing 
and display it 



2220 NONEWDR OPEN 1, 6 , 0, FILSPEC 



2230 
2240 



TYA 

BMI NOFILE 



2250 NEXTFILE INPUT 1, FILENAME 



2260 
2270 
2288 
2290 
2300 
2310 

g 

2320 
2330 
DOS 
2340 * Or type filenane 
xt reqd) to load 
2350 NOFILE 
2360 CLOSE 1 
2370 PRINT 0," 
oad ?■■ 

2380 PRINT 
, new drive" 
2390 PRINT 
RETURN] exits." 
2400 INPUT 
2410 CLOSE 
2420 LDA FILENAME 
2430 CMP SSE5CAPE 



TYA 

BMI NOFILE 
PRINT 0, FILENAME 

JMP NEXTFILE 
Request filenane to view 
[RETURN] only restarts, allowin 

the user to change drive spec 
ESCAPE will exit the progran to 

Cno drive or e 



Graphics file to l 
0," [RETURN] = Restart 
0, "Double [ESC] and [ 

0, FILENAME, 128 

1 



JULY A.N.A.L.O.Q. Computing 



23 




2440 




BEQ 


ESCEKIT 


2450 




CMP 


«155 


2460 




BNE 


GETFILE 


2470 




J MP 


START 


2480 


ESCE 


GRAPHICS 


2430 




PRINT O, "Degas View by Mat* 


Rat" 








2500 




RTS 




2510 


K 


Parse 


the filename 


2520 


* 


If no 


drive letter or nuMber 


2530 


* 


prefixed, insert those 


2540 


* 


If no 


extender, paste on .PI3 


2550 


GETFILE 


LDA FILENAME 


2560 




LDX 


HO 


2570 




LDV 


tSO ; EXTENDER FOUND 


FLAG 








2580 




STY 


EXFLG 


2590 




CMP 


«' : 


2600 




BEQ 


GETFl 


2610 




LDrt 


FILENAME+1 


2620 




CMP 


»' : 


2630 




BEQ 


GETFl 


2640 




LDA 


8'D 


2650 




STA 


FILEN 


2660 




LDA 


FIL5PEC+1 


2670 




STA 


FILEN+1 


2680 




LDA 


8' : 


2690 




STA 


FILEN+2 


2700 




LDV 


83 


2710 


K 


If a 


1 .' is in the filename 


2720 


X 


don't 


Mess with the extender 


2730 


GETF1 LDA FILENAME, X 


2740 




STA 


FILEN, Y 


2750 




INX 




2760 




INY 




2770 




CMP 


8155 


2780 




BEQ 


GETF2 


2790 




CMP 


8' . 


2800 




BNE 


GETFl 


2810 




INC 


EXFLG 


2820 




JMP 


GETFl 


2830 


GETf 


2840 




BNE 


GETF3 


2850 




DEY 




2860 




LDA 


»' . 


2870 




STA 


FILEN, Y 


2880 




INY 




2890 




LDA 


»'P 


2900 




STA 


FILEN, Y 


2910 




INY 




2920 




LDA 


tt'I 


2930 




STA 


FILEN, Y 


2940 




INY 




2950 




LDA 


tt'3 


2960 




STA 


FILEN, Y 


2970 




INY 




2980 




LDA 


8155 


2990 




STA 


FILEN, Y 


3000 


GETF 


3010 




OPEN 1,4,0,FILEN 


3020 




TYA 




3030 




BPL 


LOADIT 


3040 


M 


Bad f: 


ilenane or drive? 


3050 


* 


Restart the prograH 


3060 




PRINT 8, "File error, press 


RETURN" 




3070 




LDA 


»255 


3080 


HOLD 


3090 




BEQ 


HOLD 


3100 




STA 


CH 


3110 




JMP 


START 


3120 


LOADIT 




3130 


* 


Let OS setup the GRAPHICS 24 


3140 


* 


originally, to get all system 


3150 


« 


variables set properly 


3160 


* 


Then point to custom display 


3170 


K 


list and Memory. 


3180 




GRAPHICS 24 


3190 




LDA 


8 <DISPLAY 


3200 




LDX 


8 >DISPLAY 


3210 




LDY 


JIFFY 


3220 


LOAI 


CPY JIFFY 


3230 




BEQ 


L0ADIT1 


3240 




STA 


560 


3250 




STX 


561 


3260 




LDA 


« <BANKSCR 


3270 




STA 


SAVMSC 


3280 




LDA 


8 >BANKSCR 


3290 




STA 


SAVMSC+1 


3300 




LDA 


8SCAN1+5CAN2+2 


3310 




STA 


LINECOUNT 


3320 


* 


Forget the 34 byte Degas header 



3330 



forget header 



BGET 1,BUF160,34 ; Get and 



3340 

3350 

3360 

3370 

3380 

3390 

3400 

3410 CNTNU 

LDA SAVMSC 
STA SCREEN 
LDA 



TYA 

BPL CNTNU 

CLOSE 1 

GRAPHICS O 

PRINT 0,"L0AD ERROR" 
RTS 
Setup screen RAM pointers 



3420 
3430 
3440 
3450 
3460 
3470 
3480 
3490 
3500 
3510 
3520 



SAUMSC+1 

STA 5CREEN+1 

LDA 810 

STA 710 

LDA «0 

STA 709 

LDA 84 

STA 712 
* Get next 2 screen lines of pict 
ure data 
3530 GLINE 
a line 



BGET 1,BUF16B,16B ; Read 



3540 
3550 



TYA 

BPL GLINE2 



3560 GLINE1 LDX tSMAIN 

3570 STX BANKSEL 

3580 GRAPHICS 

3590 CLOSE 1 

3600 PRINT 8, "File input error" 

3610 RTS 

3620 GLINE2 LDX 80 ; Buffer index 

3630 * SHIFT1 will hold even pixels fo 

r even lines 

3640 * SHIFT2 will hold odd pixels for 

even lines 
3650 GLINE3 LDA BUF160,X 



3660 




LDY 


84 


3670 




CLC 




3680 


GLI 


ROL A 


3690 




ROL 


SHIFT1 


3700 




ROL 


A 


3710 




ROL 


SHIFT2 


3720 




DEY 




3730 




BNE 


GLINE4 


3740 




CLC 




3750 




LDY 


84 


3760 


* 


SHIFT3 will hold even pixels fo 


r Odd 


lines 




3770 


* 


SHIFT4 will hold odd pixels for 


Odd 


lines 




3780 




LDA 


BUF16Q+80,H 


3790 


GLII 


ROL A 


3800 




ROL 


SHIFT3 


3810 




ROL 


A 


3820 




ROL 


SHIFT4 


3830 




DEY 




3840 




BNE 


GLINE4A 


3850 




INX 




3860 




LDA 


BUF168,X 


3870 




LDY 


84 


3880 




CLC 




3890 


GLII 


3900 




ROL 


5HIFT1 


3910 




ROL 


A 


3920 




ROL 


SHIFT2 


3930 




DEY 




3940 




BNE 


GLINE5 


3950 




LDY 


84 


3960 




CLC 




3970 




LDA 


BUF160+80,X 


3980 


GLIN 


ASL A 


3990 




ROL 


SHIFT3 


4000 




ASL 


A 


4010 




ROL 


SHIFT4 


4020 




DEY 




4030 




BNE 


GLINE5A 


4040 




STX 


SAVEX 


4050 




LDX 


8PAGE1 


4060 


* 


Stuff 


pixel data in PAGE1 bank 


4070 


if 


and wain bank. Use PAGE1,2,3,4 


4080 


K 


for computational convenience 


4090 


* 


Shove 


copy of PAGEl in MAIN 


4100 

e 

4110 


« 


so display doesn't flash garbag 


* 


durins 


[ keyboard inputs. 


4120 


* 






4130 


J( 


Stuff 


appropriate shift bytes 


4140 


* 


into proper pages, as enabled. 


4150 




STX 


BANKSEL 



JULY A.IM.A.L.O.Q. Computing 



4168 LDft 5HIFT1 

4170 STft (SCREEN) ,Y 

4180 LDX ttMftIN 

4190 5TX BANKSEL 

4200 STA (SCREEN), Y 

4210 LDX 8PAGE2 

4220 5TX BANKSEL 

4230 LDft 5HIFT2 

4240 STA (SCREEN), Y 

4250 LDX 8PAGE3 

4260 STX BfiNKSEL 

4270 LDA 5HIFT3 

4280 STft (SCREEN), V 

4290 LDX 8PAGE4 

4300 STX BftNKSEL 

4310 LDft SHIFT4 

4320 STft (SCREEN), Y 

4330 INC SCREEN 

4340 BNE CHKDN 

4350 INC SCREEN+1 

4360 * Restore buffer index and check 

4370 * if done reading picture file. 

4380 CHKDN LDX SAVEX 

4390 INX 

4400 CPX »80 

4410 BED. UPDLINE 

4420 JMP GLINE3 

4430 UPDLINE 

4440 DEC LINECOUNT 

4450 BEQ 5H0IT8 

4460 LDft LINECOUNT 

4470 CMP ttlOO 

4480 BNE JMGL 

4490 LDft 8 <B0NKSCR1 

4500 STft SCREEN 

4510 LDft M >B0NKSCR1 

4520 STfl SCREEN+1 

4530 JMGL 

4540 JMP GLINE 

4550 * Display routine 

4560 * Enable respective banks 

4570 * Stick BLANK4 lines COMMand in 

4580 * display list for even line page 

s 

4590 * and BLANK5 for odd line pages 

4600 * This is done to Mininixe vertic 

al 

4610 * jitter during page flipping. 

4620 * Horizontal jitter is not elinin 

ated, 

4630 * however, as it would require so 

Me 

4640 * extra fancy bit shifting at loa 

d 

4650 * tine. Not fun. 

4660 * 

4670 SHOITO CLOSE 1 

4680 SHOIT LDX tiPAGEl 

4690 LDY UBLANK4 

4700 SH0IT1A LDA JIFFY 

4710 SH0IT1 CMP JIFFY 

4720 BEQ SH0IT1 

4730 STX BANKSEL 

4740 STY DI5PLAY+1 

4750 INX 

4760 INX 

4770 INX 

4780 INX 

4790 CPX 8PAGE3 

4800 BNE 5H0IT2 

4810 LDY 8BLANK5 

4820 SH0IT2 LDA CH 

4830 CMP 8255 

4840 BNE 5H0IT3 

4850 CPX 8PAGE4+4 

4860 BEQ SHOIT 

4870 BNE 5H0IT1A 

4880 * Always re-enable MAIN bank 

4890 * before exiting any display loop 

■ 

4900 SH0IT3 LDX tSMAIN 

4910 STX BftNKSEL 

4920 * Process key connand 

4930 * ESCAPE - Exit to dOS 

4940 * 1 - Display static screen, page 

1 only 
4950 * 2 - Display page 2 
4960 * 3 - Display page 3 
4970 * 4 - Display page 4 
4980 * H - Show half of image, flip sc 
reens 



4990 * 1 & 3 at 30 hertz 

5OO0 * S - Show half of image, flip sc 

reens 

5010 * 2 & 4 at 30 hertz 

5020 * F - Fastest display possible, a 

bit 
5030 * useless, but easy enuf to t 
hrow in 

5040 * N - Nornal display (SHOIT above 
) 

5050 * SPACE - Invert displays, swap c 
olor registers, simple 
5060 * 

5070 * Any other key loops back to STA 
RT 

5080 HOLDIT CLOSE 4 
5090 OPEN 4,4,0,"K:" 
5100 TYA 
5110 BPL HOLDNOM 
5120 CLOSE 4 
5130 JMP START 

5140 HOLDNOM BGET 4, FILENAME, 1 
5150 LDA FILENAME 
5160 * SPACE - Invert display? 
5170 CMP «32 ; SPACE? 
5180 BNE CKSCL 
5190 JMP INVERT 
5200 * (H)alf display, 1&3 ? 
5210 CKSCL CMP tt'H 
5220 BNE CKSNRM 
5230 JMP SHOHALF 
5240 * (N)ornal display, 4 pages? 
5250 CKSNRM CMP tt'N 
5260 BNE CKSFAST 
5270 JMP SHOIT 

5280 * (F)astest possible flipping? 
5290 CKSFAST CMP 8"F 
5300 BNE CKSCS 
5310 JMP FASTEST 
5320 CKSCS 

5330 * (S)how half, pages 2&4? 
5340 CMP «'S 
5350 BNE CK1 
5360 JMP SH05ECHAF 
5370 * (l)-show screen 1 only? 
5380 CK1 CMP tt'l 
5390 BNE CK2 
5400 LDX 8PAGE1 
5410 BNE SVPG 
5420 * (2)-show screen 2 only? 
5430 CK2 CMP 8'2 
5440 BNE CK3 
5450 LDX 8PAGE2 
5460 BNE SVPG 
5470 * (3)-show screen 3 only? 
5480 CK3 CMP 8'3 
5490 BNE CK4 
5500 LDX 8PAGE3 
5510 BNE SVPG 
5520 * (4)-show screen 4 only? 
5530 CK4 CMP 8"4 
5540 BNE CKESC 
5550 LDX 8PAGE4 
5560 SVPG STX BANKSEL 
5570 LDX 8255 
5580 SVPG1 CPX CH 
5590 BEQ SVPG1 
5600 LDX 8MAIN 
5610 STX BANKSEL 
5620 JMP HOLDNOM 
5630 * (ESCAPE) from the program? 
5640 CKESC CMP ttESCAPE 
5650 BNE RESTART 
5660 CLOSE 4 

5670 PRINT 0, "Degas View by Mat* 
Rat, (c) Analog" 
5680 RTS 
5690 RESTART CLOSE 4 
5708 JMP START 
5710 * INVERT routine - swap color 
5720 * registers 709 & 710 
5730 INVERT LDA 710 
5740 PHA 
5750 LDA 709 
5760 STA 710 
5770 PLA 
5780 STA 709 
5790 JMP SHOIT 
5800 * Show (H)alf, pages ! & 3 
5810 SHOHALF LDX 8PAGE1 

5820 lda jiffy continued on page 65 



JULY A.IM.A.L.O.Q. Computing 




NEW XL/XE SOFTWARE! 



DARK CHAMBERS AIRBALL SUMMER GAMES 
CROSSBOW (XE gun) CRIME BUSTERS (XE gun) 
ONE ON ONE KAIiATEKA 

CHOPLIFTER AIRBALL 



COLOR PRINTER 
PLOTTER 



1020 

Complete with: 

• 2 Pen Sets 

• 1 Roll Paper 

• Power Supply & Cable ' Brand New 

EXTRA PEN SETS *£i®53 



$14,98 

RranH r\Jr-\i/ 



ATTN. DEALERS 
PAC-MAN <^Q 

Case of 120 y*-*^* 



800 48K COMPUTER 



w/PAC-MAN 



$69.95 

NeCOIllllUoliril 



1025 PRINTER 



■ 80 Column 

■ Dot Matrix 

1 Friction /Tractor 
» Direct Connect 



$79.98 



1200XL 64K COMPUTER 



w/ PAC-MAN 



Rccon dl U oned 



1027 PRINTER 



80 Column 
Direct Connect 
I-etter Quality 



Brand New 



DISK DRIVE 



ri /t ^ 4t UlUiS. UK1VL 

1050 $169. 



800 BOARDS 

• Mother • CPU your choice 

• Power • ROM $8.98 



80it I/O Cable . $4.98 

850 Interface ^79.98 
Scnal, parallel ^ rmnl||Uonc ,| 

810 DRIVES $129. 

HrcwiiliUonrd 

BASIC TUTOR £a qq 
4 hooks v't.^O 

5.25" DISKS 20 CENTS EA." 
QTY. PRICE 

10 S4.00 

100 .... S29.95 

•1000 .... $200 

MAJORltY AKE UNNOTCHKD 

CONTAINING OLD SOFTWARE 

DOS XE .99.95 

DOS 2.5 w/manual .. $4.98 

1010 Tape drive S29. 

10' Joystick cxt S .99 

Trackball S9.95 



CARTRIDGES FOR 800, XL, XE 



BASIC CARTRIDGE 

[1AS1C TUTOR (4 BOOKS) 

TURMOIL 

PAC-MAN (no box) 

DONKEY KONG [no box) 

GORE (100.80O) 

DEMON ATTACK (400.800) 

DELUXE INVADERS 

JOURNEY TO THE PLANETS.. 

MATH ENCOUNTER 

DANCE FANTASY 

LOGIC LEVELS 

MEMORY MANOR 

LINKING LOGIC 



$4.95 CHICKEN $8.98 

$4.95 CLAIM JUMPER $8.98 

$4.95 DELTA DRAWING $8.98 

$4.95 HEY DIDDLE DIDDLE .... $8.98 

$4.95 SLIME (400/8OO) $8.98 

$4.95 ALPHABET ZOO $8.98 

$4.95 ALF $8.98 

$4.95 ADVENTURE CREATOR .. $8.98 

$4.95 SKY WRITER $14.95 

$7.98 FOOTBALL $14.95 

$8.98 DEFENDER $14.95 

$8.98 ROBOTRON $19.98 

$8.98 TENNIS $19.98 

$8.98 FINAL LEGACY $19.98 



MARIO BROS $19.98 

DONKEY KONG JR $19.98 

JUNGLE HUNT $19.98 

MOON PATROL $19.98 

BATTLEZONE $19.98 

FOOD FIGHT $19.98 

HARDBALL $19.98 

FIGHT NIGHT $19.98 

ONE ON ONE BASKETBALL .. $19.98 

DESERT FALCON $19.98 

NECROMANCER $19.98 

RESCUE ON FRACTALUS $19.98 

BALLBLAZER $19.98 

BLUE MAX $19.98 



STAR RAIDERS 11 $19.98 

DAVID'S MIDNIGHT MAGIC $19.98 

ARCIION $19.98 

KARATEKA $19.98 

CHOPLIFTER $19.98 

GATO $24.98 

ACE OF ACES $24.98 

LODE RUNNER $24.98 

BARNYARD BLASTER (XE gun) .. $24.98 

DARK CHAMBERS $29.98 

AIRBALL $29.98 

SUMMER GAMES $29.98 

CROSSBOW (XE gun) $29.98 

CRIME BUSTERS (XE gun) $29.98 



DISK SOFTWARE FOR 800, XL, XE 



DAVID'S MIDNIGHT MAGIC 

ZORRO 

BANDITS (48K 400.800) 

PROTECTOR II 

CI.AIM JUMPER 

SYNTREND 



. S4.98 CROSSCHECK S4.98 SPIDERMAN S4.98 



. S4.9S 
. $4.98 
. S4.98 
S4.98 
. S4.98 



MOLECULE MAN $4.98 

CRYSTAL RAIDER $4.98 

DESPATCH RIDER S4.98 

MISSION ASTEROID $4.98 



HULK S4.98 

VISICALC $24.98 

BOOKKEEPER W/ numeric keypad... $29.98 
GET RICH S39.98 




SAN JOSE COMPUTER 



T H 



T 



R I 



STORE 



N 



Sunrise Plaza 640 Blossom Hill Rd. SanJose, CA 95123 
(408)224-8575 . BBS (408) 224-9052 



SHIPPING: ADD S5.00 TO ALL ORDERS. AIR AND INTERNATIONAL SHIPPING EXTRA. TUATS IT. 

WARRANTY: 90 DAY WARRANTY ON ALL ITEMS. TAX: CALIFORNIA RESIDENTS ADD 7% SALES TAX. 

PREPAYMENT: USE VISA, MASTERCARD, MONEY ORDER, CASHIER'S CHECK OR PERSONAL CHECK. 

PERSONAL CHECK MUSI" CLEAR PRIOR TO SHIPMENT. C.O.D.: CASH, CASHIERS CHECK OR MO. ONLY. 

■s subject to change without notice. Brand and/or product names are trademarks or registered trademarks of their respective holde 

Ad produced on an ATARI ST using l^jbllshlng Partner and printed on an ATARI SLM801 PostScript compatible laser printer. 



CIRCLE #109 ON READER SERVICE CARD. 




continued from page 17 
of 0-65535 are allowed. 

Input mode toggle (I): This command tog- 
gles the INP flag between hex string and 
character-string modes. 

Set SRC drive (0): Pressing this key in- 
creases the source-drive number. The pro- 
gram supports Drives 1-8. 

Set DST drive (D): This command in- 
creases the destination drive by 1. You have 
access to all eight drives here also. 

Redraw screen (Control-Clear): This 
forces DM to redraw the screen from scratch 
and removes any markers that are left behind 
from a search. 

Print screen (Control-P): Pressing this key 
will perform a character dump of the screen 
to any printer. All offensive control charac- 
ters and the like are removed from the out- 
put. Use this to produce a hard copy of a 
sector's data. 

The Escape key may be used at any time 
to abort any function. The "less than" and 
"greater than" keys (" <" and " >") are used 
to change the screen hue and luminance, 
respectively. 

Disassembler 

The disassembler converts a binary file to 
assembly language source code. This code 
can be viewed on the screen (pressing the 
space bar pauses the output), dumped to a 
printer or saved as a disk file. Actually the 
disk file is in LIST format so it can be load- 
ed into a word processor or entered into an 
assembler like MAC/65. To enter the result- 
ing file into MAC/65 use: ENTER # 
D:FILENAME,A. 

The "A" adds line numbers to the source 
code. The code that is generated always has 
the same format: 

MNEMONIC OPERAND ADDR Bl B2 B3 



K 
ASTER 

boundaries, but does not cross segments of 
code. So one segment might end as: 



An example would be: 

LDA $4503, X 



$3600 BD 03 45 



The data on the left is the generated code. 
The ";" marks the beginning of the comment 
field. ADDR is the memory location where 
LDA $4503,X would be assembled. Bl, B2 
and B3 are the hexadecimal values for the as- 
sembly opcode and the operand. When DM 
encounters data that isn't assembly code it 
writes it out as ".BYTE $hh." The headers 
for each segment of a file are displayed as: 

* = $3008 ;END = $38FE 
Disassembly does continue across sector 

JULY A.N.A.L.O.Q. Compucing 



LDA »$90 


;$4823 


A9 98 


.BYTE $28 


,-$4825 


28 


* =$4826 


;EMD = 


$4118 


.BYTE $42 


;$4026 


42 


.BYTE $3A 


;$4027 


3A 


STA $5E12 


;$4828 


8D 12 5E 


etc 







The series of bytes— $20, $42 and $3A— 
quite probably make the instruction JSR 
$3A42. 

To begin disassembly, you must first set 
several parameters. You are reprompted if you 
type in an improper value; no error message 
appears. 

All input requires using the Return key to 
finalize it. Escape aborts at any time. 

You must first select the type of the disas- 
sembly, file (F) or disk (D). Pick the desti- 
nation device which can be E (screen), P 
(printer) or D (disk file). If you choose D you 
must type in a complete file name as in: 
Dmfilename.ext. 

Even for Drive 1 you must type Dl:. The 
extension, of course, is optional. If the file 
is not a binary file, an error message will be 
given. Next choose whether you want labels. 
The labels are those which most assembly 
language programmers use. They follow 
closely those given in the technical manual 
and/or Computel's Mapping the Atari. 

If you chose to disassemble files, type in 
a complete filename as your source file. The 
program takes control unless you press Es- 
cape to abort. If you are sending the code to 
a disk file or the printer, keep in mind that 
the output is kept in a large buffer. Conse- 
quently, there will be no printing or disk ac- 
cess until the buffer is full or you terminate 
the operation by pressing Escape. If the code 
is to be sent to disk, you will be asked to in- 
sert a destination disk when the buffer is full. 
Since the output code will be much larger 
than the object code, make sure you use a 
disk that is nearly empty. As you have seen, 
three bytes of data will become 26 bytes of 
source code! 

If you selected disk disassembly (D), you 
must specify a source-drive number, densi- 
ty, starting-sector number, and the number 
of sectors to read. You cannot start at the last 
sector (2D0 for single and $410 for double 
density). Start at one less (2CF or $40F) and 
specify 2 as the number of sectors to disas- 
semble. Then you must select an offset into 
the first sector (0-7F). For example, a boot 
sector does not have assembly code in the 
first six bytes. The real code begins at Byte 



6 (bytes are numbered starting at 0!). 6 would 
be the offset. Specify an origin address (for 
example $706 for a boot sector). The data 
does not get put there— the address is just 
used for reference. 

We must digress for a moment to explain 
the next option. Commercial boot disks 
generally use $80 bytes per sector, and the 
sectors are laid out sequentially on the disk. 
Sectors that are part of a file are not neces- 
sarily sequential. Each sector has a link to 
the next sector in the file. So Sector 123 may 
point to Sector 150. Therefore, when disas- 
sembling boot disks, type in 80 at the 
BYT/SEC prompt. But if you are disassem- 
bling a file or part of a file use 7D. 

When disassembling part of a file you can 
find where the file begins by looking at the 
directory, sectors $169-$16F. Each entry is 16 
bytes long. The first byte is a flag byte con- 
cerning the condition of the file, whether it 
is locked, deleted, etc. The next two bytes 
give the number of sectors in the file, while 
Bytes 3 and 4 have the starting-sector num- 
ber. (The number of sectors and starting- 
sector number are stored in LO/HI format, 
so to calculate the starting sector take Byte 
3 plus 256 times Byte 4.) With the editor, 
read the starting sector and use the trace func- 
tion to follow the file around the disk. When 
you have found what you want, switch to the 
dissembler. 



Warning! 



t 



If you are sending output to disk, you will 
need a separate diskette for this output. This 
is particularly true on any boot disk. Writ- 
ing data to that disk would probably destroy 
programs stored there. Please put write pro- 
tect tabs on the source disk, and always use 
a separate disk for output. 

A final note: The input routine is very 
smart. If you are asked to supply a number, 
only legal hexadecimal digits are allowed to 
be typed, otherwise almost anything goes. 

We hope that you can find a good use for 
this program, it is not a full-blown file edi- 
tor (if you want an incredible DOS 2.0 file 
editor, contact me on DELPHI— my member- 
name is BBKBRYAN), but it should provide 
you with the means to get a peek at those 
nasty machine-language games you have or 
fix the dreaded Error 164 (file number mis- 
match)! Well, so long and happy hacking. 

Bryan and Barry are currently taking a 
break, partly so they have time to play with 
their new STs and partly so they can solve Sta- 
tionfall and thus save the universe. 



LISTING 1: M/L EDITOR DATA 

1000 DATA 255,255,0,48,212,79,76,96,69 

,112,112,112,112,112,112,112,5604 

1010 DATA 112,112,70,46,50,112,66,90,4 

8,2,112,6,32,6,32,6,6676 

1020 DATA 65,3,48,112,112,112,70,86,50 

,6,64,66,40,40,2,2,7241 

1030 DATA 2,2,2,2,2,2,2,65,29,48,112,1 

12,112,70,86,50,9449 

1040 DATA 32,66,230,48,32,0,66,0,40,2, 

2,2,2,2,2,2,3250 

1050 DATA 2,2,2,2,2,2,2,2,2,2,2,2,2,65 

,52,48,3690 

1060 DATA 128,128,128,226,249,154,128, 

162,225,242,242,249,128,171,239,236,86 

07 

1070 DATA 226,229,128,225,238,228,128, 

162,242,249,225,238,128,179,227,232,90 

74 

1080 DATA 225,240,240,229,236,128,128, 

128,128,128,176,242,239,228,245,227,81 

67 

1090 DATA 229,228,128,230,239,242,154, 

128,161,142,174,142,161,142,172,142,32 

48 

1100 DATA 175,142,167,142,128,163,239, 

237,240,245,244,233,238,231,128,128,82 

01 

1110 DATA 239,240,244,233,239,238,6,0, 

100,105,115,107,0,101,100,105,5209 

1120 DATA 116,111,114,0,243,229,236,22 

9,227,244,0,0,100,105,115,97,8403 

1130 DATA 115,115,101,109,98,108,101,1 

14,0,243,244,225,242,244,0,0,9347 

1140 DATA 101,120,105,116,0,0,0,0,0,0, 

0,0,128,128,128,173,404 

1150 DATA 174,165,128,128,175,240,229, 

242,225,238,228,128,128,128,128,128,42 

77 

1160 DATA 128,128,128,128,128,161,164, 

164,178,128,162,145,128,162,146,128,10 

80 

1170 DATA 162,147,128,128,68,105,115,9 

7,32,84,121,112,101,32,91,70,3122 

1180 DATA 47,68,93,0,68,101,115,116,39 

,110,32,91,69,47,80,47,723 

1190 DATA 68,110,93,0,32,32,32,76,97,9 

8,101,108,115,32,91,89,1933 

1200 DATA 47,78,93,0,32,32,32,32,83,11 

1,117,114,99,101,32,70,1327 

1210 DATA 105,108,101,0,83,114,99,32,6 

8,114,185,118,101,32,91,49,2115 

1220 DATA 45,56,93,0,32,32,68,101,110, 

115,105,116,121,32,91,49,2149 

1230 DATA 45,50,93,0,32,83,101,99,116, 

111,114,32,91,49,45,50,947 

1240 DATA 68,48,93,0,32,32,32,35,32,11 

1,102,32,83,101,99,116,1277 

1250 DATA 111,114,115,0,32,32,79,102,1 

02,115,101,116,32,91,48,45,1356 

1260 DATA 55,70,93,0,79,114,105,103,10 

5,110,32,91,48,45,70,70,1285 

1270 DATA 70,70,93,0,66,121,116,47,83, 

101,99,32,91,55,68,47,958 

1280 DATA 56,48,93,0,112,112,16,70,66, 

50,16,66,200,59,66,0,93 

1290 DATA 40,2,2,2,2,2,2,2,2,2,2,2,2,2 

,2,2,1600 

1300 DATA 16,1,222,49,66,126,50,0,2,48 

,66,0,45,16,66,128,8687 

1310 DATA 42,32,66,190,51,65,190,49,66 

,206,50,0,2,2,2,2,8061 

1320 DATA 2,65,190,49,0,40,80,120,160, 

200,240,24,64,104,144,184,7738 

1330 DATA 224,8,48,88,128,168,208,248, 

32,72,112,152,40,40,40,40,3538 




1348 DATA 40,40,40,41,41,41,41,41,41,4 

2,42,42,42,42,42,42,7001 

1350 DATA 43,43,43,43,100,105,115,107, 

0,109,97,115,116,101,114,0,2740 

1360 DATA 72,99,73,0,81,89,88,89,0,0,0 

,6,100,105,115,107,323 

1370 DATA 0,0,101,100,105,116,111,114, 

0,0,0,0,0,100,105,115,9798 

1380 DATA 107,0,0,100,105,115,97,115,1 

15,101,109,98,108,101,114,0,3649 

1390 DATA 0,0,0,0,0,108,97,116,97,0,10 

1,110,116,114,121,0,1820 

1400 DATA 0,0,8,0,128,179,165,163,154, 

128,128,128,128,128,128,166,9215 

1418 DATA 169,172,154,128,128,128,128, 

128,128,172,174,171,154,128,128,128,82 

5 

1428 DATA 128,128,128,162,185,180,154, 

128,128,128,128,128,128,179,178,163,17 

67 

1438 DATA 154,145,128,128,128,128,128, 

164,179,180,154,145,128,128,128,128,65 

5 

1440 DATA 128,169,174,176,154,168,128, 

128,128,128,128,164,174,179,154,145,20 

36 

1450 DATA 128,128,128,128,164,233,243, 

235,128,173,225,243,244,229,242,128,88 

58 

1460 DATA 168,229,236,248,128,179,227, 

242,229,229,238,128,141,128,179,229,74 

72 

1470 DATA 236,229,227,244,128,163,239, 

237,237,225,238,228,178,13,114,101,456 

7 

1488 DATA 97,100,0,0,139,13,117,112,0, 

0,0,0,141,13,100,110,9540 

1490 DATA 0,0,0,0,165,13,101,100,105,1 

16,0,0,183,13,119,114,2175 

1500 DATA 185,116,101,0,181,13,117,110 

,100,111,0,8,174,13,3,98,889 

1518 DATA 97,115,101,0,163,13,99,104,9 

7,114,115,0,162,13,98,102,3226 

1520 DATA 105,108,108,0,170,13,101,111 

,114,0,0,0,180,13,116,114,1800 

1530 DATA 97,99,101,0,166,13,102,105,1 

08,101,3,8,172,13,108,105,2323 

1540 DATA 110,107,3,0,182,13,100,101,1 

10,115,0,0,173,13,109,101,2191 

1550 DATA 110,117,0,0,179,13,115,101,1 

14,99,104,0,168,13,40,127,2638 

1560 DATA 36,0,0,0,142,13,36,127,40,0, 

0,0,169,13,105,110,9726 

1570 DATA 112,117,116,0,175,13,115,111 

,114,99,101,0,164,13,100,101,3467 

1580 DATA 115,116,110,0,253,13,114,102 

,114,115,104,0,219,13,97,98,4586 

1590 DATA 111,114,116,0,156,13,104,117 

,101,0,92,0,158,13,188,117,2448 

1600 DATA 109,0,92,0,128,128,176,242,2 

29, 243, 243, 128, 163, 175, 174, 180, 5320 

1610 DATA 178,175,172,141,176,128,244, 

239,128,240,242,233,238,244,128,244,98 

30 

1620 DATA 232,233,243,128,243,227,242, 

229,229,238,128,128,128,32,160,53,2407 

1630 DATA 32,4,53,169,190,141,48,2,169 

,49,141,49,2,169,6,133,3413 

1640 DATA 185,169,45,133,186,162,0,134 

,184,134,144,134,137,134,148,134,13 

1650 DATA 154,134,161,232,134,143,134, 

162,134,163,134,182,32,187,53,169,272 

1668 DATA 0,32,185,56,32,11,55,32,113, 

52,32,45,52,32,4,53,7831 

1670 DATA 76,33,52,173,252,2,201,255,2 

40,249,162,255,142,252,2,72,3427 

1680 DATA 169,222,141,220,49,169,49,14 

1,221,49,104,162,26,221,139,52,8242 



JULY A.N.A.L.O.G. Computing 



1698 DATA 240,5,202,16,248,48,220,138, 

10,170,10,168,192,40,144,2,5946 

1700 DATA 160,40,32,115,52,189,168,55, 

141,111,52,189,169,55,141,112,7599 

1710 DATA 52,32,32,57,32,255,255,160,4 

0,138,72,162,0,185,91,60,6296 

1720 DATA 157,0,45,200,232,224,4,208,2 

44,169,154,141,4,45,104,170,9242 

1730 DATA 96,42,57,34,21,1,56,62,0,40, 

46,18,35,102,11,8,6514 

1740 DATA 58,54,118,14,6,13,45,16,55,3 

7,182,138,173,37,228,72,4729 

1750 DATA 173,36,228,72,96,132,183,160 

, 0,132, 129, 169, 128, 145, 185, 32, 8548 

1760 DATA 166,52,164,129,201,155,240,5 

7,201,27,208,2,56,96,201,126,8603 

1770 DATA 208,11,192,0,240,227,169,0,1 

45,185,136,16,220,166,182,240,2918 

1780 DATA 17,41,127,201,58,144,2,41,22 

3,32,216,56,224,0,16,2,3119 

1790 DATA 48,199,196,183,240,195,153,8 

5,45,32,235,54,145,185,200,208,2438 

1800 DATA 184,153,85,45,169,0,145,185, 

24,96,169,0,162,34,157,5,4117 

1818 DATA 45,202,16,250,96,169,0,133,1 

82,160,33,76,175,52,169,1,5932 

1820 DATA 133,182,160,32,32,175,52,144 

,1,96,162,0,189,85,45,201,5940 

1830 DATA 155,240,3,232,208,246,138,41 

,1,240,16,162,43,189,85,45,6941 

1840 DATA 157,86,45,202,16,247,169,48, 

141,85,45,162,0,160,0,189,6063 

1850 DATA 85,45,201,155,240,26,133,153 

,232,189,85,45,133,152,134,133,207 

I860 DATA 132,130,32,196,56,164,130,16 

6,133,153,85,45,200,232,208,223,3372 

1870 DATA 24,96,169,1,133,182,168,4,32 

,175,52,144,1,96,32,175,4481 

1880 DATA 63,168,185,85,45,201,155,208 

,2,24,96,32,216,56,6,212,6126 

1890 DATA 38,213,6,212,38,213,6,212,38 

,213,6,212,38,213,138,5,7134 

1900 DATA 212,133,212,208,208,220,169, 

0,160,0,153,0,40,153,0,41,3798 

1910 DATA 153,0,42,153,0,43,200,208,24 

1,165,82,133,85,152,133,84,9012 

1920 DATA 96,173,254,49,133,138,173,22 

,50,133,139,162,0,160,0,189,6717 

1930 DATA 15,60,145,138,132,128,160,28 

,145,138,164,128,232,200,189,15,740 

1940 DATA 60,145,138,132,128,160,29,14 

5,138,164,128,32,238,53,232,224,1769 

1950 DATA 32,208,218,96,165,138,24,105 

,40,133,138,144,2,230,139,96,7900 

i960 DATA 173,254,49,133,138,173,22,50 

,133,139,169,2,133,129,165,148,8450 

1970 DATA 240,3,76,76,54,160,0,32,175, 

63,132,128,185,0,44,133,4620 

1980 DATA 212,32,122,63,230,128,164,12 

9,200,173,130,5,32,235,54,145,8828 

1990 DATA 138,173,131,5,32,235,54,200, 

145, 138, 200, 132 , 129, 192 , 26 , 240 , 1499 

2000 DATA 7,164,128,192,128,208,208,96 

,32,238,53,169,2,133,129,76,7917 

2010 DATA 59,54,160,0,230,129,169,255, 

133,147,185,0,44,200,132,128,9986 

2020 DATA 201,200,144,9,56,233,200,230 

,147,230,147,208,9,201,100,144,2478 

2030 DATA 5,56,233,100,230,147,162,48, 

134,146,134,145,201,18,176,58,8997 

2040 DATA 24,101,145,133,145,164,147,4 

8,8,185,145,8,9,128,153,145,6396 

2050 DATA 0,164,129,165,146,32,235,54, 

145,138,200,165,145,32,235,54,11 

2060 DATA 145,138,200,200,132,129,192, 

27,240,7,164,128,192,128,208,166,2509 

2070 DATA 96,32,238,53,169,3,133,129,2 

08,240,56,233,10,230,146,208,2534 




2080 DATA 187,96,32,11,55,173,254,49,1 

33,138,173,22,50,133,139,162,8015 

2090 DATA 0,160,30,189,0,44,134,132,16 

6,137,208,3,32,235,54,166,7874 

2100 DATA 132,145,138,232,200,192,38,2 

08,234,32,238,53,224,128,208,225,5850 

2110 DATA 96,32,253,54,29,164,55,166,1 

31,96,32,253,54,29,160,55,6002 

2120 DATA 166,131,96,134,131,72,42,42, 

42,42,41,3,170,104,41,159,3199 

2130 DATA 96,162,7,165,137,208,2,162,1 

5,160,7,189,241,59,153,230,488 

2140 DATA 59,202,136,16,246,96,165,143 

,133,212,165,144,133,213,162,5,1261 

2150 DATA 32,111,55,173,127,44,133,212 

,162,35,32,115,55,173,125,44,6043 

2160 DATA 74,74,133,212,162,15,32,115, 

55,173,126,44,133,212,173,125,9104 

2170 DATA 44,41,3,133,213,162,25,165,1 

62,9,144,141,171,50,165,163,9199 

2180 DATA 9,144,141,181,58,165,161,24, 

105,145,141,201,50,164,154,185,757 

2190 DATA 1,60,141,191,50,160,1,208,2, 

160, 2, 132, 134, 134, 135, 32, 5758 

2200 DATA 122,63,164,134,166,135,185,1 

28,5,32,235,54,9,128,157,126,7313 

2210 DATA 50,232,200,192,4,208,239,76, 

175,63,160,127,185,128,44,153,435 

2220 DATA 0,44,136,16,247,96,32,64,0,9 

6,64,0,32,96,240,55,3231 

2230 DATA 125,56,57,56,177,56,236,56,7 

1,57,119,57,35,58,180,58,3080 

2248 DATA 89,59,222,55,231,55,11,57,26 

,57,43,57,53,57,5,58,9882 

2250 DATA 252,57,15,59,39,59,227,56,48 

,59,191,59,15,58,96,69,2865 

2268 DATA 252,57,132,72,165,137,73,1,1 

33,137,76,188,54,165,148,73,7535 

2278 DATA 1,133,148,76,250,53,32,108,5 

3,144,1,96,165,213,208,251,1284 

2280 DATA 165,212,201,128,176,245,133, 

155,32,4,53,169,164,141,3,45,6315 

2290 DATA 32,109,57,176,230,132,128,13 

6,185,85,45,166,137,248,3,32,8841 

2388 DATA 235,54,153,85,45,136,16,240, 

164,155,162,0,189,85,45,153,8893 

2310 DATA 0,44,232,200,192,128,248,4,2 

28,128,288,248,76,2,57,169,489 

2328 DATA 1,133,182,160,5,32,175,52,14 

4,1,96,169,85,133,243,169,9337 

2338 DATA 45,133,244,169,8,133,242,32, 

0,216,32,210,217,144,3,32,7223 

2340 DATA 175,63,165,213,72,165,212,72 

,162,1,134,172,202,32,34,63,6996 

2350 DATA 232,169,61,157,85,45,232,184 

,133,212,184,133,213,32,161,56,9467 

2368 DATA 76,148,56,32,188,53,176,38,1 

62,1,134,172,282,32,161,56,6749 

2370 DATA 169,61,141,90,45,162,6,32,34 

,63,189,85,45,32,235,54,4396 

2388 DATA 157,128,42,202,16,244,96,134 

,134,32,122,63,166,134,169,36,7784 

2390 DATA 157,85,45,232,76,106,63,32,1 

08,53,144,1,96,165,212,168,7889 

2480 DATA 127,153,8,44,136,16,250,76,2 

,57,165,152,32,216,56,134,6794 

2410 DATA 152,165,153,32,216,56,138,18 

,10,10,18,5,152,96,162,15,2291 

2420 DATA 221,75,68,248,3,202,16,248,9 

6,165,154,73,1,133,154,76,7739 

2438 DATA 32,55,32,108,53,144,1,96,168 

,127,185,8,44,69,212,153,6915 

2440 DATA 8,44,136,16,245,76,2,57,32,2 

50,53,32,188,54,76,32,3758 

2458 DATA 55,169,242,141,228,49,169,49 

,141,221,49,184,184,76,45,52,6291 

2468 DATA 32,148,55,76,2,57,168,39,169 

,8,153,128,42,136,16,258,6471 



JULY A.N.A.L.O.Q. Computing 



2478 DATA 96,166,162,32,63,57,134,162, 

76,32,55,166,163,32,63,57,4428 

2488 DATA 134,163,76,32,55,232,224,9,2 

88,2,162,1,96,32,188,53,4453 

2498 DATA 144,1,96,165,213,288,251,165 

,212,281,64,144,5,168,181,76,1568 

2588 DATA 9,59,18,10,133,212,173,125,4 

4,41,3,5,212,141,125,44,5853 

2518 DATA 76,2,57,165,154,288,3,76,24, 

53,76,15,53,32,189,57,1514 

2528 DATA 144,1,96,192,8,248,15,132,18 

4,168,44,185,85,45,153,48,6953 

2538 DATA 45,136,16,247,48,4,165,184,2 

48,232,168,8,185,48,45,166,9318 

2548 DATA 137,248,3,32,235,54,153,85,4 

5,288,196,184,288,238,169,129,3948 

2558 DATA 56,229,184,133,183,168,8,162 

,8,132,128,189,85,45,217,8,7385 

2560 DATA 44,288,13,288,232,228,184,28 

8,242,165,128,133,155,32,218,57,2696 

2578 DATA 164,128,288,196,183,288,224, 

96,165,155,74,74,74,168,185,254,3763 

2588 DATA 49,133,138,185,22,58,133,139 

,152,18,18,18,133,136,165,155,6788 

2590 DATA 56,229,136,133,136,18,24,181 

,136,24,185,2,168,169,127,145,7178 

2688 DATA 138,96,32,168,53,32,187,53,7 

6,2,57,173,198,2,24,185,3985 

2618 DATA 16,141,198,2,96,173,198,2,17 

0,41,240,133,142,138,24,185,8424 

2628 DATA 2,41,15,5,142,141,198,2,96,3 

2,188,53,144,1,96,165,4781 

2638 DATA 212,5,213,248,48,165,213,166 

,161,221,5,68,144,15,248,2,8648 

2648 DATA 176,35,165,212,221,3,68,144, 

4,248,2,176,24,165,212,141,9552 

2658 DATA 126,44,165,213,41,3,133,212, 

173,125,44,41,252,5,213,141,9641 

2668 DATA 125,44,76,2,57,160,188,76,9, 

59,32,188,53,144,1,96,2797 

2678 DATA 165,212,5,213,248,8,165,212, 

133, 143, 165, 213, 133, 144, 32, 134, 1592 

2688 DATA 58,16,3,32,9,59,32,148,55,76 

,2,57,165,162,141,1,3219 

2698 DATA 3,169,44,141,5,3,169,128,141 

,4,3,169,82,288,17,165,6220 

2786 DATA 163,141,1,3,169,44,141,5,3,1 

69,8,141,4,3,169,87,2726 

2710 DATA 141,2,3,165,143,5,144,208,2, 

238,143,166,161,165,144,221,2923 

2728 DATA 5,68,144,21,248,2,176,7,165, 

143,221,3,68,144,10,189,7213 

2730 DATA 3,60,133,143,189,5,68,133,14 

4,165,143,141,18,3,165,144,7445 

2748 DATA 141,11,3,169,128,141,8,3,169 

,8,141,9,3,76,83,228,4338 

2758 DATA 32,175,63,132,212,162,1,134, 

172,162,7,189,7,68,157,85,7119 

2768 DATA 45,202,16,247,162,8,32,34,63 

,169,8,157,86,45,96,32,3448 

2778 DATA 234,58,76,148,56,165,144,288 

,7,165,143,201,2,176,1,96,7621 

2788 DATA 198,143,165,143,201,255,208, 

2,198,144,76,128,58,238,143,208,3283 

2798 DATA 2,238,144,76,128,58,165,143, 

133,159,165,144,133,168,173,125,2129 

2888 DATA 44,41,3,133,144,173,126,44,1 

33,143,5,144,288,5,168,182,8955 

2818 DATA 76,9,59,76,128,58,165,159,13 

3,143,165,168,133,144,96,32,8819 

2820 DATA 108,53,144,1,96,165,143,133, 

159, 165 , 144 , 133, 168 , 165, 212 , 5, 916 

2838 DATA 213,248,8,165,212,133,143,16 

5,213,133,144,165,143,133,212,165,4738 

2840 DATA 144,133,213,32,122,63,160,3, 

185,128,5,153,58,60,136,16,4875 

2858 DATA 247,165,163,9,48,141,67,60,1 




60,0,185,47,68,248,8,32,4798 

2868 DATA 235,54,145,185,200,208,243,3 

2,166,52,281,27,248,28,41,127,9179 

2878 DATA 201,89,248,6,281,78,208,239, 

240,8,32,153,58,16,3,32,4797 

2888 DATA 9,59,76,88,59,165,161,73,1,1 

33,161,76,32,55,128,128,5727 

2890 DATA 128,139,144,128,139,145,128, 

139,146,128,139,147,128,139,148,128,15 

78 

2988 DATA 139,149,128,139,150,128,139, 

151,128,128,128,128,161,188,161,179,32 

44 

2910 DATA 163,169,169,128,128,128,8,16 

9,174,188,165,178,174,161,172,161,4179 

2920 DATA 180,161,179,163,169,169,128, 

168,179,208,16,2,4,69,114,114,7153 

2938 DATA 111,114,32,35,32,128,144,128 

, 152, 145, 144, 145, 152, 146, 144, 146 , 1123 

2940 DATA 152,147,144,147,152,148,144, 

148,152,149,144,149,152,158,144,150,31 

12 

2950 DATA 152,151,144,151,152,87,114,1 

85,116,101,32,83,69,67,58,32,3979 

2960 DATA 48,48,48,48,32,116,111,32,68 

,32,58,32,89,47,78,63,1276 

2978 DATA 0,48,49,58,51,52,53,54,55,56 

,57,65,66,67,68,69,1165 

2988 DATA 70,165,228,244,131,128,168,2 

55,164,128,164,255,168,162,230,233,892 

9 

2998 DATA 236,128,165,239,242,166,233, 

236,131,179,242,227,232,172,233,238,17 

40 

3000 DATA 235,178,229,225,228,183,242, 

233,244,128,128,128,128,166,8,132,3410 

3010 DATA 172,132,200,32,131,64,16,3,7 

6,88,61,133,168,168,0,217,7076 

3020 DATA 250,66,240,5,200,192,151,208 

,246,132,129,32,164,63,165,164,2465 

3030 DATA 133,212,165,165,133,213,162, 

23,32,34,63,32,175,63,165,168,8828 

3848 DATA 133,212,162,28,32,34,63,169, 

59,141,187,45,164,129,192,151,9244 

3050 DATA 208,33,160,7,185,236,68,153, 

85,45,136,16,247,32,175,63,8868 

3060 DATA 164,168,132,212,32,122,63,16 

9,1,133,171,162,8,32,88,63,5413 

3070 DATA 76,54,61,190,145,67,160,8,18 

9,82,66,153,86,45,232,268,9955 

3880 DATA 192,3,208,244,133,171,164,12 

9,185,48,68,168,185,217,68,133,2169 

3090 DATA 171,152,10,168,185,191,68,14 

1,52,61,185,192,68,141,53,61,7988 

3180 DATA 166,171,202,240,20,32,131,64 

,48,52,133,169,166,171,282,282,2152 

3110 DATA 240,7,32,131,64,48,39,133,17 

8,32,255,255,168,39,185,85,485 

3128 DATA 45,281,32,208,3,136,16,246,1 

69,155,153,86,45,169,0,153,8591 

3138 DATA 87,45,165,164,24,101,171,133 

, 164, 144, 2, 238, 165, 96, 32, 253, 1168 

3148 DATA 64,230,201,32,188,65,162,16, 

32,185,64,162,32,32,185,64,4436 

3158 DATA 169,59,168,69,32,54,71,32,63 

,66,76,96,69,32,2,63,1828 

3160 DATA 169,35,141,90,45,32,175,63,1 

65,169,133,212,162,6,76,34,7384 

3170 DATA 63,169,0,133,170,165,169,133 

,212,165,178,133,213,162,6,169,3045 

3188 DATA 23,133,166,169,73,133,167,16 

5,195,288,6,168,8,177,166,208,2412 

3190 DATA 3,76,34,63,72,41,15,133,134, 

104,74,74,74,74,133,173,6183 

3200 DATA 230,173,200,200,177,166,133, 

174,24,101,173,133,176,136,177,166,360 

8 



JULY A.N.A.L.O.Q. Computing 



3210 DATA 133,175,105,0,133,177,165,17 

0, 197, 175, 208, 6, 165, 169, 197, 174, 4383 

3220 DATA 240,26,165,178,197,177,240,2 

,176,67,165,169,197,176,176,61,3168 

3238 DATA 165,170,197,175,144,187,165, 

169,197,174,144,181,56,229,174,133,531 

6 

3248 DATA 173,202,168,2,208,232,177,16 

6,157,85,45,16,247,41,127,157,416 

3250 DATA 85,45,165,173,208,1,96,169,4 

3,157,86,45,232,232,32,175,669 

3268 DATA 63,165,173,133,212,238,172,3 

2,34,63,198,172,96,165,166,24,214 

3278 DATA 101,134,133,166,165,167,105, 

0,133,167,76,165,61,32,2,63,5226 

3280 DATA 76,139,61,32,2,63,32,139,61, 

168,1,232,185,230,68,157,9778 

3290 DATA 86,45,282,136,16,246,96,32,2 

,63,32,14,63,76,143,61,3272 

3300 DATA 32,81,62,76,67,62,32,81,62,1 

69,44,157,86,45,169,89,5886 

3318 DATA 157,87,45,96,169,0,133,170,3 

2,2,63,32,26,63,232,160,5941 

3320 DATA 2,208,280,169,0,133,170,32,2 

,63,32,26,63,160,2,185,4619 

3330 DATA 233,68,157,86,45,232,136,16, 

246,96,169,65,141,90,45,96,8328 

3348 DATA 32,2,63,238,171,32,175,63,16 

5,169,16,12,41,127,73,127,6194 

3350 DATA 24,105,1,133,181,76,188,62,1 

33,181,165,169,16,16,165,164,9617 

3368 DATA 56,229,181,133,212,165,165,2 

33,0,133,213,76,211,62,24,101,190 

3370 DATA 164,133,212,165,165,105,0,13 

3,213,169,2,24,181,212,133,169,512 

3380 DATA 133,212,165,213,105,0,133,17 

0, 133, 213, 32, 151, 61, 198, 171, 96, 1257 

3398 DATA 32,2,63,32,14,63,32,26,63,16 

9,41,157,86,45,96,32,2915 

3400 DATA 2,63,32,139,61,76,99,62,32,1 

75,63,165,169,133,212,162,672 

3410 DATA 31,76,34,63,32,175,63,165,17 

0,133,212,162,34,76,34,63,7078 

3420 DATA 169,40,141,90,45,76,143,61,2 

02,134,178,165,172,240,25,32,201 

3430 DATA 170,217,32,230,216,166,178,1 

68,255,200,232,177,243,157,85,45,5975 

3440 DATA 16,247,41,127,157,85,45,96,3 

2,122,63,166,178,232,224,23,442 

3450 DATA 240,30,224,21,144,14,173,130 

,5,157,85,45,232,173,131,5,8134 

3460 DATA 157,85,45,96,169,36,157,85,4 

5, 232, 165, 171, 281, 2, 248, 230, 3659 

3470 DATA 160,0,185,128,5,157,85,45,23 

2,200,192,4,208,244,282,96,3553 

3480 DATA 160,0,162,1,134,131,169,240, 

53,212,74,74,74,74,170,189,560 

3490 DATA 75,60,153,128,5,280,166,131, 

169,15,53,212,178,189,75,68,9838 

3500 DATA 153,128,5,200,166,131,202,16 

,219,96,169,32,162,39,157,85,9423 

3510 DATA 45,202,16,250,96,169,0,133,2 

12,133,213,96,162,16,32,105,8788 

3520 DATA 64,165,194,240,23,32,207,64, 

8,169,128,133,204,165,196,201,3608 

3530 DATA 128,248,5,173,255,44,133,204 

,40,48,52,96,162,16,169,3,6424 

3540 DATA 157,66,3,169,130,157,68,3,16 

9,45,157,69,3,169,4,157,6109 

3550 DATA 74,3,169,0,157,75,3,133,187, 

133,188,32,86,228,48,15,7192 

3560 DATA 32,117,65,48,18,32,73,66,208 

,3,168,1,96,168,152,192,8008 

3570 DATA 136,208,7,169,0,133,200,76,8 

8,61,32,234,58,169,88,160,9187 

3580 DATA 69,32,54,71,169,85,160,45,32 

,54,71,169,69,160,69,32,5315 




3590 DATA 54,71,32,63,66,76,88,61,162, 

32,32,105,64,162,32,169,5698 

3600 DATA 3,157,66,3,169,150,157,68,3, 

169,45,157,69,3,169,8,5213 

3618 DATA 157,74,3,169,8,133,199,157,7 

5,3,169,0,133,197,169,128,9681 

3628 DATA 133,198,173,15B,45,281,69,20 

8,3,168,1,96,76,86,228,169,9952 

3636 DATA 12,157,66,3,76,86,228,162,16 

,169,7,157,66,3,169,8,5184 

3640 DATA 157,72,3,157,73,3,76,86,228, 

165, 194, 240, 94, 166, 189, 228, 4926 

3650 DATA 204,240,8,189,128,44,23B,189 

,160,1,96,169,1,133,189,165,1024 

3660 DATA 196,201,125,208,33,173,253,4 

4,41,3,133,144,173,254,44,133,974 

3678 DATA 143,5,144,288,3,160,136,96,3 

2,207,64,8,173,255,44,133,9547 

3688 DATA 204,173,128,44,40,96,230,143 

,208,2,230,144,32,207,64,8,8872 

3698 DATA 173,128,44,40,96,165,202,5,2 

03,240,218,165,282,56,233,1,2861 

3700 DATA 133,202,165,203,233,0,133,20 

3,76,134,58,165,187,5,188,248,3067 

3710 DATA 42,165,187,56,233,1,133,187, 

165,188,233,0,133,188,238,200,5404 

3720 DATA 76,113,64,165,200,240,16,160 

,151,32,163,60,32,130,65,165,8749 

3730 DATA 169,133,168,198,200,208,236, 

96,76,9,64,32,253,64,32,117,8528 

3748 DATA 65,48,245,160,29,185,244,68, 

153,85,45,136,16,247,32,73,8451 

3758 DATA 66,288,5,32,117,65,48,224,16 

5,152,133,164,133,212,165,153,3534 

3760 DATA 133,165,133,213,32,122,63,16 

2,4,32,106,63,32,117,65,48,4178 

3770 DATA 199,165,152,133,212,56,229,1 

64,133,187,165,153,133,213,229,165,718 

2 

3780 DATA 133,188,238,187,288,2,230,18 

8,32,122,63,162,16,32,186,63,7292 

3790 DATA 32,83,71,184,104,32,130,65,7 

6,135,66,32,113,64,48,7,3834 

3800 DATA 133,152,32,113,64,133,153,96 

,169,85,160,45,32,54,71,160,7210 

3810 DATA 0,132,20,165,26,201,5,144,25 

0,173,150,45,201,69,208,1,172 

3820 DATA 96,185,85,45,145,197,281,155 

,248,3,200,208,244,200,152,24,4797 

3838 DATA 181,197,133,197,165,198,185, 

8,133,198,238,199,165,199,201,200,7501 

3840 DATA 208,4,165,199,208,1,96,169,1 

1,162,32,157,66,3,169,8,5887 

3858 DATA 157,68,3,169,128,157,69,3,16 

5,197,56,233,0,157,72,3,7110 

3860 DATA 165,198,233,128,157,73,3,169 

,0,133,197,133,199,169,128,133,2322 

3870 DATA 198,32,23,66,208,12,169,11,1 

60,69,32,54,71,32,63,66,3350 

3888 DATA 162,32,32,86,228,48,27,32,23 

,66,288,14,165,201,208,10,7981 

3890 DATA 169,35,160,69,32,54,71,32,63 

,66,160,1,96,165,163,197,8276 

3900 DATA 162,96,32,234,58,169,79,168, 

69,32,54,71,162,32,32,185,5524 

3910 DATA 64,169,85,160,45,32,54,71,16 

9,69,160,69,32,54,71,32,4118 

3920 DATA 63,66,76,96,69,32,166,52,201 

,155,208,249,162,32,96,165,2111 

3938 DATA 152, 201, 255, 208, 2, 197, 153, 96 

,65,68,67,65,78,68,65,83,6163 

3948 DATA 76,66,67,67,66,67,83,66,69,8 

1,66,73,84,66,77,73,3830 

3950 DATA 66,78,69,66,80,76,66,82,75,6 

6,86,67,66,86,83,67,4881 

3968 DATA 76,67,67,76,68,67,76,73,67,7 

6,86,67,77,80,67,80,4852 



JULY A.N.A.L.O.Q. Computing 



3978 DATA 88,67,88,89,68,69,67,68,69,8 

8,68,69,89,69,79,82,4252 

3988 DATd 73,78,67,73,78,88,73,78,89,7 

4,77,88,74,83,82,76,4673 

3998 DATA 68,65,76,68,88,76,68,89,76,8 

3,82,78,79,88,79,82,4768 

4886 DATA 65,88,72,65,88,72,88,88,76,6 

5,88,76,88,82,79,76,4448 

4818 DATA 82,79,82,82,84,73,82,84,83,8 

3,65,67,83,69,67,83,4413 

4828 DATA 69,68,83,69,73,83,84,65,83,8 

4,88,83,84,89,84,65,4918 

4838 DATA 88,84,65,89,84,83,88,84,88,6 

5,84,88,83,84,89,65,5895 

4848 DATA 185,181,117,189,125,121,97,1 

13,41,37,53,45,61,57,33,49,2888 

4858 DATA 18,6,22,14,38,144,176,248,36 

,44,48,288,16,8,88,112,5348 

4668 DATA 24,216,88,184,281,197,213,28 

5,221,217,193,209,224,228,236,192,2348 

4878 DATA 196,284,198,214,286,222,282, 

136,73,69,85,77,93,89,65,81,8928 

4888 DATA 238,246,238,254,232,288,76,1 

88,32,169,165,181,173,189,185,161,6499 

4898 DATA 177,162,166,182,174,198,168, 

164,188,172,188,74,78,86,78,94,1343 

4188 DATA 234,9,5,21,13,29,25,1,17,72, 

8,184,48,42,38,54,9624 

4118 DATA 46,62,186,182,118,118,126,64 

,96,233,229,245,237,253,249,225,261 

4128 DATA 241,56,248,128,133,149,141,1 

57,153,129,145,134,158,142,132,148,365 

5 

4138 DATA 148,178,168,186,138,154,152, 

8,8,6,8,8,8,8,8,3,8584 

4140 DATA 3,3,3,3,3,3,3,6,6,6,6,6,9,12 

,15,18,5322 

4156 DATA 18,21,24,27,38,33,36,39,42,4 

5,48,51,51,51,51,51,228 

4168 DATA 51,51,51,54,54,54,57,57,57,6 

8,68,68,68,63,66,69,2388 

4178 DATA 69,69,69,69,69,69,69,72,72,7 

2,72,75,78,81,81,84,4445 

4188 DATA 87,87,87,87,87,87,87,87,98,9 

8,98,98,98,93,93,93,6447 

4198 DATA 93,93,96,96,96,96,96,99,182, 

102,162,182,182,182,182,182,7861 

4208 DATA 185,188,111,114,117,117,117, 

117,117,128,128,128,128,128,123,126,46 

6 

4218 DATA 129,129,129,129,129,129,129, 

129,132,135,138,141,141,141,141,141,27 

88 

4228 DATA 141,141,144,144,144,147,147, 

147,150,153,156,159,162,165,8,1,394 

4236 DATA 2,3,4,5,6,7,0,1,2,3,4,5,6,7, 

8,1,4814 

4248 DATA 2,3,4,9,9,9,1,3,9,9,9,18,9,9 

,18,10,5369 

4258 DATA 18,18,8,1,2,3,4,5,6,7,8,1,3, 

0,1,3,4618 

4260 DATA 1,2,3,4,18,10,0,1,2,3,4,5,6, 

7,1,2,4783 

4270 DATA 3,4,10,10,3,11,3,0,1,2,3,4,5 

,6,7,0,4817 

4280 DATA 1,12,3,5,0,1,2,3,4,8,1,2,3,4 

,10,0,4774 

4290 DATA 1,2,3,4,5,6,7,10,18,18,18,8, 

1,2,3,4,5856 

4300 DATA 8,1,2,3,4,10,18,0,1,2,3,4,5, 

6,7,10,5802 

4310 DATA 10,10,1,2,3,4,5,6,7,1,12,3,1 

,2,3,10,4968 

4320 DATA 10,10,10,10,10,119,61,55,62, 

61,62,81,62,90,62,96,3405 

4330 DATA 62,110,62,125,62,148,62,154, 

62,233,62,234,62,249,62,2,9794 

4340 DATA 2,2,3,3,3,2,2,1,2,1,3,2,44,8 




8,41,89,8344 

4358 DATA 44,41,32,46,66,89,84,69,32,3 

6,32,42,61,36,32,32,553 

4368 DATA 32,32,32,32,59,69,78,68,61,3 

6,32,32,32,32,155,155,3793 

4370 DATA 0,155,73,110,115,101,114,116 

, 32,188, 181, 115 , 116 , 39, 118 , 44, 6433 

4380 DATA 32,82,69,84,85,82,78,155,8,1 

55,73,118,115,181,114,116,7970 

4390 DATA 32,115,111,117,114,99,101,44 

,32,82,69,84,85,82,78,155,6454 

4400 DATA 0,155,67,111,109,112,108,181 

,116,181,180,44,32,82,69,84,5761 

4418 DATA 85,82,78,155,0,155,79,85,84, 

88,85,84,32,0,155,73,5084 

4420 DATA 78,80,85,84,32,0,216,162,255 

,154,165,16,41,127,133,16,8621 

4430 DATA 141,14,210,169,3,141,48,2,16 

9,48,141,49,2,169,34,141,6416 

4448 DATA 47,2,169,18,141,197,2,169,0, 

141,288,2,169,2,133,82,7457 

4458 DATA 141,198,2,169,148,141,199,2, 

173,31,288,201,6,268,3,76,9482 

4460 DATA 116,228,201,5,240,7,201,3,20 

8,238,76,231,51,169,29,141,1908 

4478 DATA 48,2,169,48,141,49,2,32,160, 

53,169,14,133,166,169,49,7859 

4488 DATA 133,167,32,198,71,32,6,72,14 

4,3,76,96,69,173,85,45,5596 

4498 DATA 41,223,162,0,201,70,240,5,20 

1,68,208,233,232,134,194,32,4495 

4508 DATA 198,71,32,17,72,176,227,168, 

20,32,67,72,176,244,32,47,8318 

4518 DATA 71,133,163,32,198,71,32,6,72 

, 176, 207, 173, 85, 45, 41, 223, 9791 

4520 DATA 162,0,201,89,248,5,201,78,28 

8, 236, 232, 134, 195, 165, 194, 288, 8377 

4538 DATA 23,32,198,71,32,17,72,176,17 

7,168,8,32,67,72,176,244,9645 

4548 DATA 32,47,71,133,162,76,229,78,3 

2,223,71,32,190,71,32,6,6563 

4558 DATA 72,176,151,173,85,45,41,127, 

56,233,48,48,241,201,9,176,953 

4560 DATA 237,133,162,32,190,71,32,6,7 

2,176,264,173,85,45,41,127,8435 

4578 DATA 56,233,49,48,241,281,2,176,2 

37,133,161,178,189,3,60,133,2865 

4580 DATA 212,189,5,60,133,213,32,122, 

63,168,1,185,128,5,153,120,8915 

4598 DATA 49,200,192,4,208,245,32,190, 

71,32,29,72,176,203,32,35,8197 

4680 DATA 72,176,246,165,212,133,143,1 

65,213,133,144,32,190,71,32,29,224 

4616 DATA 72,176,182,165,212,5,213,248 

,245,165,212,133,202,24,101,143,5289 

4620 DATA 133,212,165,213,133,203,101, 

144,133,213,32,35,72,176,223,32,1622 

4630 DATA 190,71,32,29,72,176,218,165, 

213,208,247,165,212,201,128,176,8436 

4640 DATA 241,133,189,32,198,71,32,29, 

72,176,198,165,212,133,164,165,3958 

4650 DATA 213,133,165,32,190,71,32,29, 

72,176,182,165,213,288,247,165,6000 

4660 DATA 212,201,125,240,4,201,128,28 

8,237,133,196,32,168,53,132,281,4416 

4678 DATA 169,52,141,48,2,169,48,141,4 

9,2,32,182,63,32,50,64,4084 

4680 DATA 32,135,60,32,130,65,169,0,13 

3,200,162,255,173,252,2,201,4575 

4690 DATA 255,240,237,142,252,2,201,28 

,208,6,142,252,2,76,88,61,9511 

4700 DATA 201,33,208,220,173,252,2,201 

,28,248,239,281,33,288,245,142,7451 

4716 DATA 252,2,76,258,70,173,86,45,56 

,233,48,96,141,61,71,148,9050 

4720 DATA 62,71,173,255,255,240,13,32, 

79,71,238,61,71,288,243,238,5584 

4730 DATA 62,71,208,238,96,281,155,208 



JULY A.N.A.L.O.Q. Computing 



,9,165,82,133,85,230,84,76,1975 

4740 DATA 138,71,32,235,54,72,164,84,1 

85,254,49,133,148,185,22,50,450 

4750 DATA 133,141,104,164,85,145,140,2 

00,192,39,144,9,240,7,230,84,1830 

4760 DATA 32,130,71,164,82,132,85,96,1 

64,84,192,21,144,53,169,0,8315 

4770 DATA 133,138,169,40,133,139,169,4 

0,133,140,169,40,133,141,162,0,9917 

4788 DATA 160,39,177,140,145,138,136,1 

6,249,165,141,133,139,165,140,133,4125 

4790 DATA 138,24,105,40,133,140,165,14 

1,105,0,133,141,232,224,21,208,3134 

4860 DATA 223,198,84,96,32,83,71,169,6 

4,141,198,2,169,0,141,182,9886 

4810 DATA 2,165,166,164,167,32,54,71,1 

69,58,32,79,71,169,32,32,5951 

4820 DATA 79,71,32,235,71,165,166,24,1 

05,16,133,166,144,2,230,167,1358 

4830 DATA 96,165,85,164,84,24,121,254, 

49,133,185,185,22,50,105,0,8197 

4840 DATA 133,186,160,20,169,0,145,185 

,136,16,251,96,32,235,71,160,1873 

4858 DATA 0,132,182,200,76,175,52,32,2 

35,71,160,0,132,182,160,15,9999 

4860 DATA 76,175,52,32,235,71,76,108,5 

3, 165, 212, 5, 213, 240, 22, 166, 2201 

4870 DATA 161,165,213,221,5,60,144,15, 

240,2,176,9,165,212,221,3,1097 

4888 DATA 60,144,4,240,2,56,96,24,96,1 

73,85,45,281,155,240,56,758 

4890 DATA 201,68,240,34,201,80,240,4,2 

01,69,208,44,169,58,141,86,1095 

4900 DATA 45,169,155,141,87,45,162,0,1 

89,85,45,153,138,45,200,232,2065 

4910 DATA 224,20,208,244,24,96,173,87, 

45,201,58,208,11,173,86,45,9581 

4920 DATA 201,49,144,4,201,57,144,222, 

56,96,32,184,72,48,43,169,8779 

4930 DATA 280,160,59,32,196,72,48,34,1 

69,0,133,138,166,138,189,254,3404 

4940 DATA 49,188,22,50,32,196,72,48,17 

,230,138,165,138,201,16,208,1982 

4950 DATA 235,169,126,160,50,32,196,72 

,16,3,76,9,59,96,169,32,5207 

4960 DATA 141,192,3,169,155,141,193,3, 

208,56,133,140,132,141,160,0,831 

4970 DATA 162,0,134,134,177,140,16,2,2 

30,134,41,127,201,123,176,19,587 

4980 DATA 201,96,176,7,201,64,176,11,2 

4,105,32,166,134,240,6,9,7584 

4990 DATA 128,288,2,169,46,153,192,3,2 

00,192,39,208,211,169,155,141,5867 

5000 DATA 231,3,162,11,189,11,73,157,0 

,3,202,16,247,32,89,228,9631 

501O DATA 96,64,1,87,128,192,3,48,0,40 

,0,78,8,25,0,2,9500 

5020 DATA 67,65,83,73,78,281,9,0,6,84, 

82,65,77,83,218,9,5570 

5830 DATA 0,8,87,65,82,77,83,212,8,0,9 

,66,79,79,84,191,6128 

5040 DATA 25,0,10,68,79,83,86,69,195,2 

5,0,12,68,79,83,73,3966 

5850 DATA 78,201,9,0,16,80,79,75,77,83 

,203,9,0,17,66,82,3674 

5060 DATA 75,75,69,217,41,0,18,82,84,6 

7,76,79,203,9,0,32,3834 

5070 DATA 73,67,72,73,68,218,9,8,33,73 

,67,68,78,79,218,9,5610 

5080 DATA 0,34,73,67,67,79,77,218,9,0, 

35,73,67,83,84,65,4482 

5090 DATA 218,9,8,36,73,67,66,65,76,21 

8,9,0,37,73,67,66,3746 

510O DATA 65,72,218,9,0,38,73,67,80,84 

,76,218,9,8,39,73,4156 

5110 DATA 67,80,84,72,218,9,0,40,73,67 

,66,76,76,218,9,0,4481 

5120 DATA 41,73,67,66,76,72,218,9,8,42 




,73,67,65,88,49,218,6589 

5130 DATA 9,0,43,73,67,65,88,50,218,9, 

0,65,83,79,85,78 4841 

5148 DATA 68,218,9,0,66,67,82,73,84,73 

,195,9,0,77,65,84,4681 

5150 DATA 82,65,67,212,9,0,82,76,77,65 

,82,71,286,9,0,83,4867 

5160 DATA 82,77,65,82,71,286,9,8,84,82 

,79,87,67,82,211,25,6646 

5178 DATA 0,85,67,79,76,67,82,211,25,8 

,88,83,65,86,77,83,5622 

5180 DATA 195,9,8,106,82,65,77,84,79,2 

88,86,0,212,70,82,176,9347 

5190 DATA 86,0,218,78,82,197,86,8,224, 

78,82,177,86,0,230,70,9834 

5200 DATA 82,178,6,8,236,70,82,216.7,0 

,237,69,69,88,208,8,8433 

5210 DATA 0,238,78,83,73,71,286,8,8,23 

9,69,83,73,71,286,10,7887 

5220 DATA 0,240,70,67,72,82,70,76,199, 

8,8,241,68,73,71,82,7174 

5230 DATA 212,6,0,242,67,73,216,25,0,2 

43,73,78,66,85,78,198,9342 

5248 DATA 9,8,251,82,65,68,70,76,199,2 

4,0,252,70,76,88,84,7734 

5250 DATA 210,24,0,254,70,88,84,82,178 

,25,2,8,86,68,83,76,5803 

5260 DATA 83,212,25,2,6,86,66,82,69,65 

,203,25,2,8,86,75,3946 

5270 DATA 69,89,66,196,25,2,34,86,86,6 

6,76,75,281,25,2,36,4301 

5280 DATA 86,86,66,76,75,196,9,2,43,83 

,82,84,73,77,210,9,6118 

5290 DATA 2,47,83,68,77,67,84,284,25,2 

,48,83,68,76,83,84,5228 

5300 DATA 204,9,2,50,83,83,75,67,84,28 

4,8,2,52,76,88,69,4654 

5318 DATA 78,280,8,2,53,76,88,69,78,21 

4,8,2,54,66,82,75,4663 

5328 DATA 75,217,9,2,68,67,79,76,68,83 

,212,9,2,111,71,88,5574 

5338 DATA 82,73,79,210,121,2,112,88,65 

,68,68,76,176,57,2,128,6637 

5348 DATA 83,84,73,67,75,176,121,2,124 

,80,84,82,73,71,176,57,7691 

5350 DATA 2,133,83,84,82,73,71,176,9,2 

,162,69,83,67,78,76,5958 

5368 DATA 199,233,2,163,84,65,66,77,65 

,288,9,2,182,73,78,86,7293 

5378 DATA 78,76,199,9,2,190,83,72,78,7 

6,79,283,9,2,191,66,7293 

5388 DATA 79,84,83,67,218,9,2,192,88,6 

7,79,76,82,176,9,2,5666 

5398 DATA 193,88,67,79,76,82,177,9,2,1 

94,88,67,79,76,82,178,8254 

5488 DATA 9,2,195,88,67,79,76,82,179,9 

,2,196,67,79,76,79,6771 

5418 DATA 82,176,9,2,197,67,79,76,79,8 

2,177,9,2,198,67,79,7880 

5420 DATA 76, 79, 82, 178, 9, 2, 1<J9, 67, 79, 7 

6,79,82,179,9,2,288,7605 

5430 DATA 67,79,76,79,82,188,24,2,224, 

82,85,78,65,196,25,2,6576 

5448 DATA 226,73,78,73,84,65,196,9,2,2 

28,82,65,77,83,73,218,9318 

5450 DATA 25,2,229,77,69,77,84,79,288, 

24,2,231,77,69,77,76,7745 

5468 DATA 287,57,2,234,68,86,83,84,65, 

212,9,2,240,67,82,83,8276 

5478 DATA 73,78,288,6,2,242,67,72,177, 

8,2,243,67,72,65,67,7367 

5488 DATA 212,8,2,244,67,72,66,65,211, 

9,2,251,65,84,65,67,7538 

5490 DATA 72,210,5,2,252,67,200,9,2,25 

4,68,83,88,70,76,199,9785 

5500 DATA 9,2,255,83,83,78,76,65,199,9 

,3,8,68,68,69,86,4658 

5518 DATA 73,195,8,3,1,68,85,78,73,212 



JULY A.N.A.L.O.Q. Compucing 



,9,3,2,68,67,79,3860 

5520 DATA 77,78,196,9,3,3,68,83,84,65, 

84,211,25,3,4,68,3927 

5530 DATA 66,85,70,76,207,9,3,6,68,84, 

73,77,76,207,25,3,4926 

5540 DATA 8,68,66,89,84,76,207,24,3,10 

,68,65,85,88,177,41,6058 

5550 DATA 3,26,72,65,84,65,66,211,8,3, 

64,73,67,72,73,196,6833 

5560 DATA 8,3,65,73,67,68,78,287,8,3,6 

6,73,67,67,79,205,6984 

5570 DATA 8,3,67,73,67,83,84,193,8,3,6 

8,73,67,66,65,204,6802 

5580 DATA 8,3,69,73,67,66,65,200,8,3,7 

0,73,67,80,84,204,7142 

5590 DATA 8,3,71,73,67,80,84,200,8,3,7 

2,73,67,66,76,204,7081 

5680 DATA 8,3,73,73,67,66,76,280,8,3,7 

4,73,67,65,88,177,6713 

5610 DATA 8,3,75,73,67,65,88,178,9,3,1 

92,80,82,78,66,85,6597 

5620 DATA 198,9,3,253,67,65,83,66,85,1 

98,8,5,128,76,66,85,6662 

5630 DATA 70, 198, 9, 208, 0, 72, 80, 79, 83, 8 

8,176,9,208,1,72,88,7248 

5648 DATA 79,83,88,177,9,288,2,72,80,7 

9,83,80,178,9,208,3,7707 

5650 DATA 72,80,79,83,80,179,9,208,4,7 

2,80,79,83,77,176,9,7177 

5660 DATA 208,5,72,80,79,83,77,177,9,2 

08,6,72,80,79,83,77,6976 

5670 DATA 178,9,208,7,72,80,79,83,77,1 

79,9,288,8,83,73,90,7454 

5680 DATA 69,80,176,9,208,9,83,73,90,6 

9,80,177,9,208,10,83,7743 

5690 DATA 73,90,69,80,178,9,208,11,83, 

73,90,69,88,179,8,208,9247 

5760 DATA 12,83,73,90,69,205,9,208,18, 

67,79,76,80,77,176,9,7274 

5710 DATA 208,19,67,79,76,80,77,177,9, 

208,26,67,79,76,88,77,6996 

5728 DATA 178,9,288,21,67,79,76,88,77, 

179,9,268,22,67,79,76,7368 

5736 DATA 86,76,176,9,288,23,67,79,76, 

86,76,177,9,288,24,67,7632 

5748 DATA 79,76,88,76,178,9,268,25,67, 

79,76,88,78,179,8,268,9144 

5756 DATA 26,67,79,76,66,283,8,288,27, 

86,82,73,79,218,9,268,9978 

5768 DATA 29,71,82,65,67,84,284,9,288, 

36,72,73,84,67,76,216,9146 

5776 DATA 9,268,31,67,79,78,83,79,264, 

8,216,8,65,85,68,76,7833 

5786 DATA 177,8,218,1,65,85,68,67,177, 

8,218,2,65,85,68,76,6636 

5798 DATA 178,8,216,3,65,85,68,67,178, 

8,216,4,65,85,68,76,6688 

5866 DATA 179,8,216,5,65,85,68,67,179, 

8,218,6,65,85,68,78,6746 

5810 DATA 188,8,218,7,65,85,68,67,186, 

9,218,8,65,85,68,67,6754 

5828 DATA 84,264,9,216,18,82,65,78,68, 

79,265,8,218,14,73,82,7886 

5836 DATA 81,69,266,8,218,15,83,75,67, 

84,264,8,211,6,88,79,8816 

5846 DATA 82,84,193,8,211,1,86,79,82,8 

4,194,8,211,2,86,65,7773 

5856 DATA 67,84,264,8,211,3,88,66,67,8 

4,264,9,212,6,68,77,7693 

5866 DATA 65,67,84,264,9,212,1,67,72,6 

5,67,84,284,25,212,2,8244 

5878 DATA 68,76,73,83,84,284,9,212,4,7 

2,83,67,82,79,264,9,7893 

5886 DATA 212,5,86,83,67,82,79,284,9,2 

12,7,86,77,66,65,83,7176 

5896 DATA 197,9,212,9,67,72,66,65,83,1 

97,8,212,18,87,83,89,7892 




5986 DATA 78,195,9,212,11,86,67,79,85, 

78,212,7,212,12,88,69,8184 

5916 DATA 78,208,7,212,13,88,69,78,214 

,8,212,14,78,77,73,69,7786 

5928 DATA 286,6,216,6,65,78,268,7,216, 

236,76,65,83,195,6,217,2208 

5936 DATA 178,73,76,288,6,217,218,76,8 

6,261,7,218,68,98,78,82,579 

5946 DATA 176,6,218,78,98,78,177,7,218 

,96,78,83,85,194,7,218,1329 

5958 DATA 182,78,65,68,196,7,218,219,7 

0,77,85,284,7,219,48,70,619 

5968 DATA 68,73,214,9,221,64,88,76,89, 

69,86,284,8,221,137,78,767 

5976 DATA 76,68,48,216,8,221,141,78,76 

,68,48,288,8,221,152,70,1065 

5986 DATA 76,68,49,216,8,221,156,78,76 

,68,49,288,8,221,167,70,1419 

5998 DATA 83,84,48,218,8,221,171,76,83 

,84,48,268,8,221,182,78,2887 

6666 DATA 77,79,86,197,6,221,192,69,88 

,288,8,221,284,69,88,88,2363 

6618 DATA 49,176,6,222,265,76,79,199,8 

,222,289,76,79,71,49,176,2818 

6020 DATA 9,228,0,69,68,73,84,82,214,9 

,228,16,83,67,82,69,7850 

6030 DATA 78,214,9,228,32,75,69,89,66, 

68,214,9,228,48,80,82,9164 

6040 DATA 73,78,84,214,9,228,64,67,65, 

83,69,84,214,9,229,80,579 

6856 DATA 68,73,83,75,73,214,9,228,83, 

68,83,75,73,78,214,7,8952 

6060 DATA 228,86,67,73,79,214,7,228,89 

,83,73,79,214,9,228,92,1687 

607O DATA 83,69,84,86,66,214,9,228,95, 

83,89,83,86,66,214,9,9444 

6880 DATA 228,98,88,73,84,86,66,214,9, 

228,116,87,65,82,77,83,9327 

6690 DATA 214,9,228,119,67,79,76,68,83 

,214,0,226,2,227,2,0,8280 

6108 DATA 48,0,0,0,0,0,0,0,0,0,0,0,8,8 

,6,8,6148 



LISTING 2: ASSEMBLY 



0100 


SAVEttD:DMPTl.M65 


0110 
0120 
0130 


.OPT NO LIST 




0140 


Disk Master 


0150 


the Disk Editor/DisasseMbler 


0160 




0170 


CO 1989 BY ST-LOG 


0180 




0190 


by: Barry Kolbe 


0200 


and Bryan Schappel 


0210 




0220 
0230 






0240 


*= 


0250 1 


'ASS .= PftSS+i 


0260 


.IF PASS=1 


0270 


.INCLUDE UD : 5YSE0U . M65 


0280 


.ENDIF 


0290 




0300 


Zero Page Usage 


0310 




0320 


*= $80 


0330 1 


li. .DS 1 ;saue x/y hold 


0340 \ 


'2 .DS l ;areas 


0350 1 


'3 .DS 1 


0360 J 


(1 .DS 1 


0370 > 


!2 .DS 1 


0380 > 


13 .DS 1 


0390 1 


"MPl .DS 1 ;tenp variable 


0400 1 


MP2 .DS 1 


0410 1 


MP3 .DS 1 


0420 t 


IFLnG .DS 1 ;asc/internal 


0430 1 


.DS 2 jpntr 


0440 I 


.DS 2 jpntr 


0450 C 


TMP .DS 1 j extra te*ip 


0460 « 


ECL .DS 1 ;sec tt lo 


0470 « 


ech .DS 1 ;sec » hi 


0480 1 


NITS .DS l ;units digit 



JULY A.M.A.L.O.G. Computing 















BlL 












0490 


TENS .DS 1 


;tens digit 


1468 


I 


^^y 


2430 










0500 


IV .DS 1 


; inverse flag 


1478 


DISADL .BYTE $70 , $78, $78, $46 


2440 


POO 


JSR 


GETONE 


;get input 


0510 


HDF .DS 1 


;hex/dex flag 


1488 




.WORD CR2 


2450 




BCC 


P01 


: nV> 


0520 


ICHT .DS 1 


j counter 


1490 




.BYTE $20, $42 


2460 


G0_ 


INT 


JMP INTRO : no wau . 


0530 


NMD .DS 1 




1500 




.WORD INFOLN 


2470 










0540 


TOTD .DS 1 




1510 




.BYTE $28, $00, $42 


2480 


P01 


LDA 


IBUF 


;get char 


0550 


HXL .DS 1 


;hex lo 


1528 




.WORD SM 


2490 




AND 


8223 


jnake upper/norn 


0550 


HUH .DS 1 


jhex hi 


1538 




.BYTE $02, $02, $02, $02, $02 


2500 




LDX 


80 


; 0=f i les 


0570 


HKORST .DS 1 


; hex/string 


1548 




.BYTE $02, $02, $02, $02, $02 


2510 




CMP 


8'F 


; was it F? 


0580 


FBYTE .DS 1 


; first byte 


1550 




.BYTE $02, $82, $02, $82, $82 


2520 




BEQ 


P02 


j yes ! 


0590 


MftTFLG .DS 1 


;natch flag 


1560 




.BYTE $02, $02, $02, $02, $02 


2530 




CMP 


8'D 


; a D? 


0600 


LNKLO .DS 1 


Jlink lo 


1570 




.BYTE $41 


2540 




BNE 


POO 


; no . 


0610 


LNKHI .DS 1 


; link hi 


1580 




.WORD DISADL 


2550 




INK 




;up flag 
jsave type 


0620 
0630 


SSECL .DS 1 
SSECH .DS 1 


jsave sec lo 
jsave sec hi 


1590 
1600 


ILO .SBYTE 




2560 
2570 


P02 

1 


5TX 


TYPE 


'■■i. | lMJdMJi l MU■ ' 




0640 
0650 
0660 


DENSITY .DS 1 
5RCDRV .DS 1 
DESDRV .DS 1 
ADDR .DS 2 
INDR .DS 2 


jdensity flag 
;source drive 
;dest'n drive 
jdisa address 
; pointer 


1610 
1620 
1630 
1640 
1650 




.SBYTE 
.SBYTE 
.SBYTE 
.SBYTE 
.SBYTE ■ 


•LUMJinMiUEnK" 


2580 
2590 
2600 
2610 
2620 


P30 


JSR 
JSR 
BCS 
LDY 
JSR 


PROMPT 

GETFN 

GO_INT 

820 

CHECKFN 


jdest'n device 


'HCEnTEaBB" 


;get nane 


'■TCiZiniMTBMJI" 


;bad input 


0670 


■■:ii:ir : ii«iiKHMiii» 


;copy to pos 20 


0680 


■MLMIkWiMM" 


;check filenane 


0690 


OP .DS 1 


; first disa byte 


1660 




.SBYTE "tJilfJJ di" 


2630 




BCS 


P30 


;oops, bad one. 


0700 


DTEMP .DS 2 


;next 2 bytes 


1670 




.SBYTE "sk editor » 


2640 




JSR 


G.DRU 


;get drive 8 


0710 


NBYTE .DS 1 


j8 instr bytes 


1680 




.SBYTE "B3HC di" 


2650 




STA 


DESDRV 


,'save it. 


0720 


HXDC .DS 1 


jhex/dec flag 


1690 




.SBYTE "sassenbler" 


2660 










0730 


ADD_0N .DS 1 


jaddress offset 


1700 




.SBYTE " &EE& ex" 


2670 




JSR 


PROMPT 


;want labels? 


0740 


L0C_5 .DS 2 


;address start 


1710 




.SBYTE "it 


2680 


P40 


JSR 


GETONE 


jget response. 


0750 


LOC_E .DS 2 
CNTLO .DS 2 


jaddress end 
;counter 


1720 
1730 


INFOLN .5BY1 




2690 
2700 




BC5 
LDA 


GO_INT 

IBUF 


;bad one. 


0760 


E "— t| MjJJJjLU." 


;get char 


0770 


DINS .DS 2 
IMODE .DS 1 


jdisa hold 
; input node 


1740 
1750 




.SBYTE ■ 
.SBYTE ' 


'Bi idtxniji" 


2710 
2720 




AND 
LDX 


8223 
80 




0780 


r-fm.ym.ymm- 


;e=labels. 


0790 


MAXLEN .DS 1 


jnax length 


1760 


1 




2730 




CMP 


8'Y 


;a Y? 


0800 


SRFLG .DS 1 


jsrch data flag 


1770 


;Di 


sassenbler pronpts 


2740 




BEQ 


P41 


; yes . 


0810 


INPLOC .DS 2 


; input loc 


1780 


I 




2750 




CMP 


8'N 


;tpy N? 


0820 


BYTCNT .DS 2 


jsegnent cnt 


1790 


PB 


.BYTE "Disa Type CF/D3",8 


2760 




BNE 


P40 


; no . 


0830 


GETPTR .DS 1 


;sec offset 


1800 


P3 


.BYTE "Dest'n [E/P/Dnl",8 


2770 




INX 




;l=no labels 


0840 


STLOAD .DS 2 


;start load 


1810 


P4 


.BYTE " Labels CY/N3",8 


2780 


P41 


STX 


LABELS? 


jsave choice 


0850 


ENLOAD .DS 2 


;end load 


1820 


P5 


.BYTE " Source File",B 


2790 


• 








0860 


TYPE .DS 1 


jdisa/f i le 


1830 


PI 


.BYTE "Src Drive [1-81", 


2800 




LDA 


TYPE 


; files or disk? 


0870 


LABELS? .DS 1 


;label flag 


1840 


P2 


.BYTE " Density [1-21", 


2810 




BNE 


F_SECS 


;want disk. 


0880 


5. SIZE .DS 1 


jsector size 


1850 


P6 


.BYTE " Sector £1-2DG3",8 


2820 




JSR 


PROMPT 


; filenane 


0890 


BUFPNT .DS 2 


; output pntr 


1860 


P7 


.BYTE " 8 of Sectors", O 


2830 


i 








0900 


LINES .DS 1 


jttline in bigbuf 


1870 


P8 


.BYTE " Offset [0-7F3",0 


2840 


P50 


JSR 


GETFN 


;get filenane 


0910 


BYTES .DS 1 


j bytes gotten 


1880 


P9 


.BYTE "Origin CO-FFFFI",0 


2850 


G.O 


BCS 


GO_INT 


;bad one. 


0920 


SFLAG .DS 1 


;source flag 


1890 


PA 


.BYTE "Byt/Sec [7D/8O3",0 


2860 




LDY 


80 


;posit 8 


0930 


SECCNT .DS 2 


jsector count 


1900 


# 




2870 




JSR 


CHECKFN 


;check Fnane 


0940 


SECBYTES .DS 1 


j bytes/sector 


1910 


jINCLUDE Support Files 


2880 




BCS 


P50 


;oops. 


0950 


5M = $2800 


;screen nenory 


1920 


1 




2890 




JSR 


G.DRU 


;get drive 


0960 


LINEO = SM+16*40 


;text window 


1930 




.INCLUDE 8D1:DMPT2.M65 


2900 




STA 


SRCDRU 


jsave it. 


0970 


BIGBUF = $8000 


;P: buffer 


1940 




.INCLUDE «Dl:DMPT3,M65 


2910 




JMP 


DIS_IT 


;and disa! 


0980 


PRNBUF = S03C0 




1950 




.INCLUDE 8DUDMPT4 ,M65 


2920 


J 








0990 


i 




I960 


; 




2930 


F_5EC5 JSR UP_INDR ;skip fnane 


1000 


; PRINT Macro 




1970 


;lntro Screen 


2940 




JSR 


PROMPT 


jsource drive 


1010 


i 




1980 


J 




2950 


P10 


JSR 


GETONE 


;get response 


1020 


.MACRO PRINT 




1990 


INTRO jchill decinal 


2960 




BCS 


GO_INT 


jbad one. 


1030 


LDA 8 <■/.! 




2000 




LDX 8$FF jclear stack 


2970 




LDA 


IBUF 


;get the char 


1040 


LDY « >y.L 




2010 




TKS 


2980 




AND 


8$7F 




1050 


JSR EPRINT 




2020 




LDA POKMSK 


2990 




SEC 




;nake 1-8 


1060 


.ENDM 




2030 




AND tt$7F 


3000 




5BC 


8'0 




1070 


I 




2040 




STA POKMSK 


3010 




BMI 


P18 


; <0? yes! 


1080 


jWork Buffers 




2050 




STA IRQEN 


3020 




CMP 


89 


J=>9? 


1090 


j 




2060 




LDA « <INDL ;turn on the 


3030 




BCS 


P10 


; yes. 


1100 


*= S2C00 




2070 




STA SDLSTL Jintro display 


3040 




STA 


SRCDRV 


jsave it 


1110 


MYBUF .DS 128 


;sec work buf 


2080 




LDA 8 >INDL {list. 


3050 


f 








1120 


D5BUF .DS 128 


jdata buffer 


2098 




STA SDL5TL+1 


3060 




JSR 


PROMPT 


j density 


1130 


INPLIN .DS 40 


jinput line 


2100 




LDA 8$22 ;nornal PF 


3070 


P20 


JSR 


GETONE 


j input. 


1140 


SRBUF .DS 45 


jsearch buffer 


2110 




STA SDMCTL 


3080 


G.l 


BCS 


G.O 


jbad input. 


1150 


IBUF .DS 45 


; input buffer 


2120 




LDA 8$BA ;white text 


3090 




LDA 


IBUF 


jget char 


1160 


SRCFILE .DS 20 


jsource file 


2130 




STA C0L0R1 


3100 




AND 


8$7F 


jnask inverse 


1170 


DSTFILE .DS 20 


;dest'n file 


2140 




LDA 8$88 ;black border 


3110 




SEC 




;nake 8-1 


1180 


i 




2150 




STA C0L0R4 


3120 




SBC 


8'1 




1190 


jPrograw Start 




2160 




LDA 82 ;grey backgrnd 


3130 




BMI 


P20 


j<8?, yes. 


1200 


t 




2170 




STA LMARGN ;left narg=2 


3140 




CMP 


82 


j>1? 


1210 


*- $3000 


; origin 


2180 




STA C0L0R2 


3150 




BCS 


P28 


j yes. 


1220 


START JMP INTRO 


;go intro! 


2190 




LDA 8$94 jblue grl text 


3160 




STA 


DENSITY 


jsave density 


1230 


f 




2200 




STA C0L0R3 


3170 




TAX 




;X=A 


1240 


;lntro Display L 


ist 


2210 


I-LOO 


3180 




LDA 


SDLO,X 


jget nax sec 8 


1250 


i 




2220 




CMP 86 j start? 


3190 




STA 


FRO 


jand put it in 


1260 


INDL .BYTE $70 , $70, $70, $78, $70 


2230 




BNE T_5 ;no. 


3200 




LDA 


5DHI,X 


JFRB. 


1270 


.BYTE $70, $70, $70, $70, $46 


2240 




JMP WARM5V jyes, so long! 


3210 




STA 


FRO + 1 




1280 


.WORD CREDIT 




2250 


T_5 


CMP 85 jselect? 


3220 




JSR 


BIN2HEX 


jnake hex. 


1290 


.BYTE $70, $42 


2268 




beq go_dis jyes. disa. 


3230 




LDY 


81 


j copy nax 8 


1300 


. WORD ILO 




2270 




CMP 83 ; option? 


3240 


D.CP LDO 


LBUFF, V 


J into the next 


1310 


.BYTE $02, $70, $06, $28 


2280 




BNE I_LOOP ;no, loop 


3250 




STA 


P6+10, Y 


j pronpt . 


1320 


•BYTE $06, $28, $06, $41 


2290 




JMP DISKED ;Disk Editor. 


3260 




INY 






1330 


.WORD INDL 




2300 


; 




3270 




CPY 


84 




1340 


, 




2310 


jDi 


sassenbler Data Entry 


3280 




BNE 


D.CP 




1350 


;Info Display Li 


St 


2320 


i 




3290 


i 








1360 


» 




2338 


G0_ 


DIS LDA 8 <INFODL J install 


3300 




JSR 


PROMPT 


j sector 


1370 


INFODL .BYTE $78 


,$70, $78, $46 


2340 




STA SDLSTL ; the data 


3310 


P60 


JSR 


5PC_NUM 


jget nunber 


1380 


.WORD CR2 




2350 




LDA 8 >INFODL ; entry DLIST 


3320 




BCS 


G.l 




1390 


.BYTE $06, $40, $42 


2360 




STA SDLSTL+1 


3330 




JSR 


TE5TFR0 


j in range? 


1400 


.WORD SM+40 




2370 




JSR CLRSCN jclear screen 


3340 




BCS 


P60 


j no. 


1410 


.BYTE $02, $02, $02, $02, $02 


2380 




LDA 8 <P0 ;point to the 


3350 




LDA 


FRO 


j yes, so we 


1420 


.BYTE $02, $02, $02, $02, $41 


2390 




STA INDR j first pronpt 


3360 




STA 


5ECL 


jsave the sector 


1430 


■WORD INFODL 




2400 




LDA 8 >P0 


3370 




LDA 


FRO + 1 


jnunber for 


1440 


, 




2410 




STA INDR+1 


3380 




STA 


SECH 


j later . 


1450 


; Disassembler Di 


splay List 


2420 




JSR PROMPT jDiSk/Files 


3390 


i 









JULY A.N.A.L.O.Q. Computing 



35 



















TO 










3400 




JSP. 


PROMPT 


jasecs 


4366 


BEQ 


E.DN 


; i f 0, all done 


5320 


G_SCR LDA COLCRS j get xpos 


3410 


P70 


JSR 


5PC_NUM 


;get nunber 


4370 


JSR 


E.PUT 


;put the char 


5330 


LDY ROHCRS 


;and ypos 


3420 


G.2 


BC5 


G.l 


;bad one. 


4380 


INC 


E.LP+1 


jbunp pointer 


5340 


CLC 


;add line addr 


3430 




LDft 


FRO 


;is nunber 0? 


4390 


BNE 


E.LP 




5350 


ADC GL,Y 




3440 




ORft 


FR0 + 1 




4400 


INC 


E.LP+2 




5360 


STA INPLOC 




3450 




BEG 


P70 


;yes, that's bad 


4410 


BNE 


E.LP 


;and loop 


5370 


LDA GH,Y 




3460 




LDA 


FRO 


jsave the nunber 


4420 


E.DN RTS 


;so long. 


5380 


adc ao 




3470 




STA 


SECCNT 


jof sectors for 


4430 


j 






5390 


STA INPLOC+1 


3480 




CLC 




; later & add on 


4440 


;E: Put 


byte routine 


5400 


LDY B20 


;zap 21 chars 


3490 




ADC 


5ECL 


jstart sector 


4450 


i 






5410 


lda ao 


;a space 


3500 




STA 


FRO 


;so we can test 


4460 


E.PUT CMP 8E0L 


; is it a CR? 


5420 


G_CLR STA CINPLOO.Y ;on screen 


3510 




LDft 


FR0+1 


;to see if too 


4470 


BNE 


E.EOL 


;no. 


5430 


DEY 


;down counter 


3520 




STA 


5ECCNT+1 


jnany see's 


4480 


PUTCR LDA LMARGN 


;set xpos to 


5440 


BPL G-CLR 


.;and loop 


3530 




ADC 


SECH 


j will be read. 


4490 


STA 


COLCRS 


;the Margin 


5450 


RTS 


;so long. 


3540 




STA 


FR0 + 1 




4500 


INC 


ROHCRS 


jbunp ypos 


5460 


I 




3550 




JSR 


TESTFRO 


;in range? 


4510 


JMP 


SCROLL 


jcheck scroll 


5470 


;Get 1 byte via 


INPUT 


3560 




BC5 


P7G 


; no way. 


4520 


; 






5480 


i 




3570 


• 








4530 


E.EOL JSR ASC2IC 


;nake icode 


5490 


GETONE JSR G_5CR ;clear line 


3580 




JSR 


PROMPT 


;of fset 


4540 


PHA 




;save it 


5500 


ldy ao 


; force text node 


3590 


P80 


JSR 


SPC_NUM 


;get nunber 


4550 


LDV 


ROHCRS 


jget ypos 


5510 


STY IMODE 




3600 




BCS 


G.2 




4560 


LDA 


GL, Y 


j look up the 


5520 


INY 


;1 char 


3610 




LDA 


FR0 + 1 


;test hi byte 


4570 


STA 


L 


jaddress of this 


5530 


JMP INPUT 


jget input 


3620 




BNE 


P80 


;>? yes! 


4588 


LDA 


GH,Y 


;line and store 


5540 


i 




3630 




LDA 


FRO 


;get lo byte 


4590 


STA 


L+l 


;in tenp area 


5550 


;Get a Filenane 




3640 




CMP 


8S80 


;=> $80? 


460O 


PLA 




jget char back 


5560 


j 




3650 




BCS 


P80 


;yes. 


4610 


LDY 


COLCRS 


;get xpos 


5570 


GETFN JSR G_SCR 


;zap line 


3660 




STA 


GETPTR 


;save for later 


4620 


5TA 


CD ,Y 


;on screen! 


5580 


LDY ao 


; force text node 


3670 


j 








4630 


1 






5590 


STY IMODE 




3680 




JSR 


PROMPT 


; origin 


4640 


INV 




j up xpos 


5600 


LDY ai5 


;get 15 chars 


3690 


P90 


JSR 


SPC_NUM 


;get nunber 


4650 


CPY 


«39 


;at rnargn? 


5610 


JMP INPUT 




3700 




BCS 


G.2 




4660 


BCC 


E.LU 


;no. 


5620 


1 




3710 




LDA 


FRO 


jcopy the nun 


4670 


BEQ 


E.LU 


j just there. 


5630 


;Special get nunber 


3720 




STA 


ADDR 


jinto the addr 


4680 


INC 


ROHCRS 


jnext line 


5640 


i 




3730 




LDA 


FR0+1 


; for the disa- 


4690 


JSR 


SCROLL 


;scroll screen 


5650 


SPC_NUM JSR G_SCR ;zap line 


3740 




STA 


ADDR+1 


;ssenbler. 


4700 


LDY 


LMARGN 


;get nargin 


5660 


JMP G-NUM 


;get a nunber 


3750 


J 








4710 


E.LU STY C0LCR5 


;set xpos 


5670 


1 




3760 




JSR 


PROMPT 


;sector size. 


4720 


RTS 




;and leave 


5680 


;Test FRG for sector range 


3770 


PAS 


JSR 


SPC_NUM 


;get nunber 


4730 


j 






5690 


f 




3780 




BCS 


G.2 




4740 


i Check 


to see if 


screen nust 


5700 


TESTFRO LDA FRO 


;is FRO a o? 


3790 




LDA 


FRO + 1 


;no hi byte 


4750 


;be scrolled. 




5710 


ORA FR0+1 




3800 




BNE 


PA0 


; allowed ! 


4760 


J 






5720 


BEQ T.ERR 


jyes! 


3810 




LDA 


FRO 


jtest lo byte 


4770 


SCROLL 


-DY ROHCRS ;get ypos 


5730 


LDX DENSITY 


;get density 


3820 




CMP 


8125 


;125 bytes? 


4780 


CPY 


tt21 


;at line 21? 


5740 


LDA FR0+1 


jcheck to see 


3830 




BED. 


G.SZ 


;yes! 


4790 


BCC 


S.NO 


jno. 


5750 


CMP SDHI,X 


;if the sector 


3840 




CMP 


»128 


J128 bytes? 


4800 


LDA 


8 <SM 


;get the addrs 


5760 


BCC T.GD 


;nunber in fro 


3850 




BNE 


PAO 


; no . 


4810 


5TA 


T 


jof line & 1 


5770 


BEQ T.LO 


; is allowed. 


3860 


G.SZ 


;save size 


4820 


LDA 


« >SM 




5780 


BCS T.ERR 




3870 


t 








4830 


STA 


T + l 




5790 


T.LO LDA FRO 




3880 


;Disassenbly Entry Point 


4840 


LDA 


a <:sm+4Q] 


5800 


CMP SDL0,X 




3890 


j 








4850 


STA 


L 




5810 


BCC T.GD 




3900 


DIS 


_IT 


JSR CLRSCN ;zap screen 


4860 


LDA 


a >[SM+4Q1 


5820 


BEQ T.GD 




3910 




STY 


SFLAG 


jclear flag 


4870 


STA 


L+l 




5830 


T.ERR SEC 


jsignal error 


3920 




LDA 


« <DI5ADL ; install the 


4880 


LDX 


ao 


jline counter 


5840 


RTS 




3930 




STA 


SDLSTL 


;disa DLIST 


4890 


S.M1 LDY »39 


;now nove 1 line 


5850 


T.GD CLC 


;signal good 


3940 




LDA 


8 >DISADL 


4900 


S.M2 LDA CLJ.V 


jup 40 bytes 


5860 


RTS 




3950 




STA 


SDL5TL+1 




4910 


5TA 


CT),Y 




5870 


f 




3960 




JSR 


OPENIN 


;open input 


4920 


DEY 






5886 


jCheck Filenane 


for Dx: 


3970 




JSR 


OPENOUT 


;open output 


4930 


BPL 


S.M2 




5890 


j 




3980 


t 








4940 


LDA 


L + l 


;now update the 


5900 


CHECKFN LDA IBUF ; get 1st char 


3990 


D_L00P J5R DISAMEM J do instr. 


4950 


STA 


T + l 


jpointers . 


5910 


CMP BEOL 


;is it EOL? 


4000 




JSR 


PRINT. IT 


;print it 


4960 


LDA 


L 




5920 


BEQ CH.B 


;yes. 


4010 




LDA 


140 


;clear counter 


4970 


STA 


T 




5930 


CMP 8'D 


; is it 'D'? 


4020 




STA 


BVTES 




4980 


CLC 






5940 


BEQ FN.D 


jyes. 


4030 




LDK 


8$FF 


;get a $FF 


4990 


ADC 


84 




5950 


CMP a-p 


; is it 'P'? 


4040 


C_L00l 


;key press? 


5000 


STA 


L 




5960 


BEQ CH.C 


jyes. 


4050 




CMP 


aSFF 




5010 


LDA 


L + l 




5970 


CMP a'E 


;is it 'E'? 


4060 




BED. 


D_L00P 


f no. 


5020 


ADC 


ao 




5980 


BNE CH.B 


J no. 


4070 




STX 


CH 


clear CH 


5030 


STA 


L + l 




5990 


CH.C LDA a 1 : 


jnake 2nd char 


4080 




CMP 


828 


; escape? 


5040 


INX 




;up line count 


6000 


STA IBUF+1 


a ' : ' and the 


4098 




BNE 


T.SPC 


no. 


5050 


CPX 


a2i 


;at end? 


6010 


LDA 8E0L 


J3rd char an EOL 


4100 


END 


IT STX CH 


clear CH and 


5060 


BNE 


S.Ml 


;no way. 


6020 


STA IBUF+2 




4110 




JMP 


D_OUER 


exit. 


5070 


DEC 


ROHCRS 


idee ypos 


6030 


CH.R LDX ao 


jzero index 


4120 


I 








5080 


5. NO rt; 




;and leave 


6040 


CH.L LDA IBUF,X 


jget input char 


4130 


T.SPC CMP 833 


Space=pause 


5090 


J 






6050 


STA SRCFILE, 


Y jsave in buf 


4140 




BNE 


D_LOOP 




5100 


;Print c 


Pronpt 




6060 


INY 


jup buf index 


4150 


I 








5110 


t 






6070 


INX 


jup input indx 


4160 


K.HAIT LDA CH 


get keypress 


5120 


PROMPT JSR PUTCR 


jprint CR 


6080 


CPX 820 


j done 28 yet? 


4170 




CMP 


828 


escape? 


5130 


LDA 


a$4o 


force uppercase 


6090 


BNE CH.L 


j no. 


4180 




BEQ 


END. IT 


yes, exit 


5140 


STA 


SHFLOK 




6100 


CLC 


jsignal good. 


4190 




CMP 


833 


wait for spc 


5150 


LDA 


ao 


and no inverse 


6110 


RT5 


jand leave. 


4200 




BNE 


K.HAIT 


to stop the 


5160 


STA 


INUFLG 




6120 


1 




4210 




STX 


CH 


pause . 


5170 


LDA 


INDR 


get addr of 


6136 


FN.D LDA IBUF+2 


jget 3rd char 


4220 




JMP 


D_LOOP 


loop again. 


5180 


LDY 


INDR+1 


the pronpt 


6140 


CMP 8" : 


j 3rd char a ■ : ' ? 


4230 


f 








5190 


J5R 


EPRINT 


print it 


6150 


BNE CH.B 


jno, bad nane 


4240 


;Get dri 


ve nunber 


5200 


LDA 


a* : 


;put a ' : ■ 


6160 


LDA IBUF+1 


jget drive 8 


4250 


; 








5210 


JSR 


E.PUT 




6170 


CMP 8'1 


j less than 1? 


4260 


G.DRV LDA IBUF+1 


;get char 


5220 


LDA 


a$20 


; and a space 


6180 


BCC CH.B 


jyes. 


4270 




SEC 




set carry 


5230 


JSR 


E.PUT 




6190 


CMP 8'9 


j greater than 8? 


4280 




SBC 


Jt'8 


subtract '0 


5240 


JSR 


G_SCR 


clear line 


6200 


BCC CH.R 




4290 




RTS 




and leave 


5250 


UP_INDR 


LDA INDR 


;add 16 to get 


6210 


CH.B SEC 


jsignal bad 


4300 


i 








5260 


CLC 




to the next 


6220 


RTS 




4310 


JE: 


Print routine 


5270 


ADC 


aie 


pronpt. 


6230 


i 




4320 


t 








5280 


STA 


INDR 




6240 


;Dunp Editor Screen to Printer 


4330 


EPRINT STA E.LP+1 jsave 10 byte 


5290 


BCC 


UP_HI 




6250 


■ 




4340 




STV 


E.LP + 2 1 


save hi byte 


5300 


INC 


INDR+1 




6260 


DMPSCN JSR PRNLFD 


4350 


E.LP LDC 


SFFFF j 


get char 


5310 


UP_HI RTS 


so long. 


6270 


BMI PRERR 





JULY A.M.A.L.O.G. Computing 

















fgk 
















LDA 8 <BORDER ;print top 


LISTING 3: ASSEMBLY 


1020 

1030 
1040 




• SB' 

• SB' 

• SB! 






6280 


■TE "m:i;m it 

fTE "Q-read Q-up 

fTE "Q-dn B-edit " 


6298 




LDY 8 >BORDER ;border 








1050 




•SBYTE "C-write " 


6388 




JSR DMPSUB 




0100 


; SAVE8D: 


1060 




•SBYTE "ffl-undo d-8base " 


6310 




BMI PRERR 




0110 




OPT NO LIST 


1070 




• SBYTE "0-chars 0-bfill ■■ 


6328 
6330 




LDA «8 
STA T 


jcount lines 


0120 
0130 






1088 
1090 




•SBYTE "B-eor " 

•SBYTE "Q-trace Q-file8 » 




;of sectr info 




, 




6340 


DMLP 


;get index 


0140 


; Disk Master part 2 ; 


1100 




.SBYTE "B-link8 E-dens " 


6358 




LDA GL,X 


jLo/Hi bytes 


0150 


; by: Barry Kolbe ; 


1110 




.SBYTE "C-Menu " 


6368 
6370 




LDY GH,X 
JSR DMPSUB 


jline address 
;print it 


0160 




fC3 1989 ; 


1120 
1130 




.SBYTE "g-serch [J-HVD " 




0170 








. SBYTE "H - D H 


M-inpuT " 


6380 




BMI PRERR 




0180 






1140 




.SBYTE "H-sorce " 


6398 




INC T 


;next line 


0190 


;Graphics Display List 


1150 




.SBYTE "H-destn Q-rfrsh " 


6488 




LDA T 




0200 






1160 




.SBYTE EOL,"- 


abort Q-hue t " 


6418 




CMP 816 


;done 16? 


0210 


GRODL .BYTE $ 


1170 




. SBYTE "fl-lUM t " 


6420 




bne DMLP ;nope 
LDA 8 <STATU5 jprint 
LDY 8 >STATUS jstatus line 
JSR DMPSUB 


0220 
8238 
0240 
0250 




WORD CRl 
BYTE $10, $42 
WORD BORDER 
BYTE $42 


1180 
1190 
1200 
1210 


PRLINE 

• SB1 
. SB1 


SBYTE "■ 




6430 


IJJ±-tM'IilIK;MC l 


6440 


HE "LMijli lif <Tt<" 


6450 


TE "trUJJJil 


6460 




BPL DMOK 


;Y has error 


0268 




WORD SM 


1220 


, 








6470 


PHERR JMP IOERR 


;dble return 


8278 




BYTE 2,2,2,2,2 


1230 


;The Beginning of 


the 


6480 


DMOK RT5 




0280 




BYTE 2,2,2,2,2 


1240 


jDi 


5k Editor 




6490 


i 






0290 




BYTE 2, 2, 2, 2, 2, $10 


1250 


1 








6500 


;Pr 


inter Linefeed 


0300 




BYTE $01 


1260 


DISKED JSR CLRSCN 


jclear screen 


6510 


; 






0310 


OLDD 


.WORD CONT ;flip botton 


1270 




JSR 


ERAINP J 


clear input 


6520 


PRNLFD LDA 




0320 


CONT 


.BYTE $42 ;of screen 


1280 




LDA 


8 <GRODL 


jset up DL 


6530 




STA PRNBUF 




0330 




WORD STATUS ; f or HELP 


1290 




STA 


SDLSTL 




6540 




LDA 8E0L 




0340 




BYTE 0,2 jscreen at 


1300 




LDA 


8 >GRODL 




6550 




STA PRNBUF+1 




0358 




BYTE $30, $42 


1310 




STA 


SDLSTL+1 




6560 




BNE SAP 




0360 




WORD INPLIN 


1320 




LDA 


8 <CINPLIN+63 


6570 


I 






0370 




BYTE $10, $42 


1330 




STA 


INPLOC 




6580 


;Pr 


int a Line using SIO 


0388 




WORD LINEO 


1340 




LDA 


8 > CINPLIN + 63 


6590 


t 






8390 




BYTE $20, $42 


1350 




STA 


INPLOC+1 




6600 


DMPSUB STA L 


;save address 


0480 




WORD PRLINE 


1360 




LDX 


80 ; 


initialize 


6610 




STY L+l 


; for indirect 


0410 




BYTE $41 


1370 




STX 


SRFLG 




6620 




LDY 80 




0420 




WORD GRODL 


1380 




STX 


5ECH 




6636 


DML 


LDX 88 


;use as an 


0430 


■ 




1390 




STX 


AIFLAG ; 


A5C/INT flag 


6640 




STX TMP1 


; inverse flag 


0440 


;The 


Help Screen Display 


1400 




STX 


HDF ; 


hex/dec flag 


6650 




LDA CL3,Y 


;get byte 


0450 


;Code used by HELPME 


1410 




STX 


HXORST ; 


input flag 


6666 




BPL DMJ 


; inversed? 


0460 


* 




1420 




STX 


DEN5ITY ; 


0=sngl 1 =dbl 


6670 




INC TMP1 


;yes-set flag 


0470 


HELPDL .BYTE $42 


1430 




INX 






6680 


DMJ 


AND 8$7F 


;nask it off 


0488 




.WORD HELPS 


1440 




STX 


SECL 




6690 




CMP 8123 


;skip control 


8490 




.BYTE 0,2, 2, 2, 2, 2, $41 


1450 




STX 


SRCDRU 




6700 




BC5 PERD 


; characters 


0500 




.WORD GRODL 


1460 




STX 


DE5DRU 




6710 




CMP 896 




0510 


, 




1470 




STX 


IMODE 




6728 




BCS PRK 




0520 


; Low 


and High bytes of 


1488 




JSR 


DOLEFT J 


show border 


6738 




CMP 864 




0539 


jscreen Lines * 


1490 




LDA 


80 i 


show enpty 


6748 




BCS PERD 




8540 


, 




1500 




JSR 


BFC 




6750 




CLC 


jchange to 


0550 


GL 


.BYTE <SM, <CSM+403 


1510 




JSR 


MASIN 




6760 




ADC 8$2B 


JATASCII 


0560 




.BYTE <[SM+8B3, <USM+I203 


1520 


JG 


JSR 


C-OFF 




6770 


PRK 


LDX TMP1 


;was it inverse? 


0570 




.BYTE <C5M+1603, < CSM+2003 


1530 




JSR 


GETCOM ; 


get conand 


6780 




BEQ PORK 


j no 


0580 




.BYTE <tSM+2403, < C5M+2803 


1540 




JSR 


ERAINP i 


zap input 


6798 




ORA 8$80 


;add back in 


0590 




.BYTE <[SM+3203, <[SM+3603 


1550 




JMP 


JG j 


More 


6880 




BNE PORK 




0600 




.BYTE <CSM+4O03, <CSM+4403 


1560 


; 








6818 


PERD LDA «' . 


; ' . ' for contrls 


0610 




.BYTE <CSM+4803, <[SM+5203 


1570 


;Get a Connand 




6820 


PORK STA PRNBUF, 


Y ;into buffer 


0620 




.BYTE <[SM+5603, <C5M+6003 


1588 


i 








6830 




INY 




0630 




.BYTE <[5M+6403, <CSM+6803 


1598 


GETCOM LDA CH 


force uppercase 


6840 




CPY 8$27 


;done w/line? 


0640 




.BYTE <:SM+7201, < [SM+7603 


16O0 




CMP 


8$FF 




6858 




BNE DML 


; no 


0650 




.BYTE <[SM+80B3, <[SM+8403 


1610 




BEQ 


GETCOM , 


get key 


6860 




LDA 8E0L 


:add EOL 


0660 




.BYTE <CSM+8803, <C5M+9203 


1620 




LDX 


8$FF 




6878 




STA PRNBUF+$27 


0670 


i 




1630 




STX 


CH 




6880 


. 






0686 


GH 


.BYTE >5M, >[SM+403 


1640 




PHA 


, 


save it 


6890 


5AP 


LDX 8SBB 


;copy cuds 


0690 




.BYTE >:SM+803, > [SM+1203 


1650 




LDA 


8 <CONT , 


reset DLIST 


6900 


SIP 


LDA PSIOCB, X 


;to DDEVIC 


0700 




.BYTE > CSM+1603 , > ISM+2003 


1660 




STA 


OLDD 




6910 
6920 
6930 




STA $0300 , X 




0710 




.BYTE >CSM+2403, > C5M+2803 


1670 




LDA 


8 >CONT 






DEX 




0720 




.BYTE >tSM+3203, > CSM+3603 


1680 




STA 


OLDD+1 






BPL SIP 




0730 




■BYTE > [SM+4003 , > CSM+4403 


1690 




PLA 


, 


get key 


6940 




JSR SIOV 


;let SIO print 


0740 




.BYTE >ISM+4803, > CSM+5203 


1780 




LDX 


826 , 


check it 


6950 
6960 
6970 




RTS 




0750 




.BYTE >CSM+5603, > ESM+6003 


1710 


CC1 


CMP 


COMKEY,X 




, 






0760 




.BYTE >CSM+6403, > CSM+6803 


1720 




BEQ 


CC2 , 


valid 


PSIOCB .BYTE $48 


; printer 


0770 




•BYTE >C5M+7203, > ISM+7603 


1730 




DEX 






6980 




.BYTE $01 


junit 1 


0780 




.BYTE >CSM+8003, > CSM+8403 


1740 




BPL 


CC1 




6998 




.BYTE $57 


; write 


0790 




.BYTE >[5M+8803, > CSM+9203 


1750 




BMI 


GETCOM J 


overs 


70OO 




.BYTE $80 


;send bit 7=out 


0800 


) 




1760 


CC2 


TXA 


J 


x 2 for offset 


7010 




•WORD PRNBUF 


jbuffer 


0810 


CREDIT .SBYTE "disk Master " 


1770 




A5L 


A 




7020 




.WORD $30 


jtine out 


0820 




.BYTE "HcI",0,"O.YXY" 


1788 




TAX 






7030 




.WORD $28 


;buf length 


0830 


CRl 


•SBYTE " disk " 


1798 




ASL 


A 




7040 




.BYTE $4E 


;nornal prnt 


0840 




•SBYTE "editor 


1800 




TAY 






7050 




.BYTE $00 


; unused 


0850 


CR2 


•SBYTE " disk dis" 


1810 




CPY 


840 




7060 








0860 




•SBYTE "assenbler " 


1820 




BCC 


N40 




7070 


;Get Label Data 




0870 




•SBYTE " data " 


1830 




LDY 


840 




7088 








0880 




•SBYTE "entry 


1840 


N40 


JSR 


SHO_COM 




7090 




•INCLUDE 8D 


DMPT5.M65 


0890 


• 




1850 




LDA 


COMTAB,X 


;get address 


7100 








0900 


STATUS 


I860 




STA 


JOFF+1 , 


of routine 


7110 


jFi 


nd where progran ends 


0910 




.SBYTE "DSBH ■HQEBiMB" 


1870 




LDA 


COMTAB+1, 


X 


7120 








0920 




. SBYTE "hi'iiJB H" 


1880 




STA 


JOFF+2 




7130 


.OPT LIST 

EHDPROG S * 




0930 
0940 


DRLIN .SB" 




1890 
1900 


JSR ERATXT , 
JOFF JSR SFFFF , 


window 


7140 


'TE "E33EHBIMKE" 


carry out 


7150 




.OPT NO LIST 


0950 




.SBYTE "tu3HI ■■ULLfiJM 


1910 


I 








7160 
7170 


;Add Run address 


0960 
0970 


i 


• SBYT 


"QIEffilHH" 


1920 
1930 


C_OFF LDY 840 








7180 








0980 


;Help Screen 


1940 


;Show the Connand 


7198 




*= RUNAD 
.WORD START 




0990 

1000 


HELP5 .SB 




1950 
1960 


SHO 


_COM 


TXA 




7288 


'tf ■•iiinmkuiJJiiMi!]" 




7218 




.END 




1010 




• SBYT 


"^HTODlT^^^^^nTW'l" 


1970 




PHA 












JULY A.IM.A.L.O.O. Compucing 















ft4 














1980 


LDX no 


2950 


1 








3920 




LDA 


GH 




1990 


SHC LDA CTXT,Y 


2960 


G_HEX LDA 81 


jhex Mode. 


3930 




STA 


T + l 




2080 


STA INPLIN,X 


2970 




STA 


IMODE 




3940 




LDX 


80 




2010 


INY 


2980 




LDY 


832 


J 32 chars Max 


3956 


LFB 


LDY 


80 


jleft coluMn 


2020 


INK 


2990 




JSR 


INPUT 


;get input. 


3960 




LDA 


LEFTB,X 




2030 


CPX 84 


3000 




BCC 


MEV 


jok? 


3976 




STA 


CT) ,Y 




2040 


BNE SHC 


3010 




RTS 




; no. 


3986 




STY 


Yl 




2050 


LDA 8$9A 


3020 


MEV 


LDX 


80 


;get length of 


3990 




LDY 


828 


jrepeat in 


2060 


STA INPLIN+4 


3030 


G4E 


LDA 


IBUF,X 


;the input. 


4000 




STA 


CT) ,Y 


; Middle 


2070 


PLA 


3040 




CMP 


8E0L 




4010 




LDY 


Yl 




2080 


TAX 


3050 




BEQ 


G4L 




4020 




INX 




;over 1 


2890 


RTS 


3060 




INX 






4030 




INY 






2100 


• 


3070 




BNE 


G4E 




4040 




LDA 


LEFTB.X 


jcoluMn 2 


2110 


;CoHHand Keys 


3080 


; 








4050 




STA 


CT) ,Y 




2120 


• 


3090 


G4L 


TXA 




;is the input 


4060 




STY 


Yl 




2130 


COMKEY .BYTE $2A, $39, $22, $15, $01 


3100 




AND 


81 


j even? 


4070 




LDY 


829 


;and in Middle 


2140 


.BYTE $38,$3E,$00,$28,$2E 


3110 




BEQ 


G4R 


jyes! 


4080 




STA 


CT) ,Y 




2150 


•BYTE $12,$23,$66,$0B,$08 


3120 


; 








4090 




LDY 


Yl 




2160 


.BYTE $3A,$36,$76,$0E,$06 


3130 




LDX 


843 


jno. add a 


4100 




JSR 


ADD48 


jdown 1 line 


2170 


.BYTE SOD, $2B, $10, $37, $25 


3140 


MDN 


LDA 


IBUF,X 


; leading zero 


4110 




INX 






2180 


.BYTE $B6,$8A 


3150 




STA 


IBUF+1,X 


jto the input 


4120 




CPX 


832 


J16 lines? 


2190 


1 


3160 




DEX 




;buf fer. 


4130 




BNE 


LFB 




2200 


;Get a Key 


3170 




BPL 


MDN 




4140 




RTS 






2210 


t 


3180 




LDA 


8'0 




4150 


I 








2220 


GETKEY LDA $E425 ; the easy way 


3190 




STA 


IBUF 




4160 


;Add 40 


onto po 


inter to 


2230 


PHA ;to get keys 


3200 


G4R 


LDX 


80 


; input pntr 


4170 


;Move down one 


line 


2240 


LDA $E424 J frOM the OS! 


3210 




LDY 


80 


; output pntr 


4180 


J 








2250 


PHA 


3220 


GH2 


LDA 


IBUF,X 


jget chap 


4190 


ADD40 LDA T 




2260 


RTS 


3230 




CMP 


8E0L 


;all done? 


4200 




CLC 






2270 


, 


3240 




BEQ 


GHID 


;yes! 


4210 




ADC 


8$28 




2280 


;Get Input until Escape or 


3250 




STA 


HXH 


jsave it 


4220 




STA 


T 




2290 


; RETURN is pressed 


3260 




INX 




;get next char 


4230 




BCC 


A40 




2300 


f 


3270 




LDA 


IBUF,X 




4240 




INC 


T+l 




2310 


INPUT STY MAXLEN jsave length 


3280 




STA 


HXL 


jsave it 


4250 


A40 


RTS 






2320 


LDY 80 jcounter 


3290 




STX 


X3 


;save x 


4260 


1 








2330 


INLOOP STY Y2 jsave it 


3360 




STY 


Y3 


jsave y 


4270 


jDi 


splay the Sector Data 


2340 


LDA 8$80 j cursor is a 


3310 




J5R 


HEX2BIN 


;Make binary 


4280 


• 








2350 


STA CINPL0C),Y ;blOCk. 


3320 




LDY 


Y3 


jget Y 


4290 


SHWSEC LDA GL 


; start at top 


2360 


JSR GETKEY ;get a key 


3330 




LDX 


X3 


jget X 


4300 




STA 


T 




2370 


LDY Y2 ;restore Y 


3340 




STA 


IBUF.Y 


jsave binary 


4310 




LDA 


GH 




2380 


CMP ttEOL ;is it EOL? 


3350 




INY 




;up Y 


4320 




STA 


T + l 




2390 


BEQ INDONE jyes! 


3360 




INX 




;up x 


4330 




LDA 


82 


jy pos -2 


2400 


CMP 827 ; is it E5C? 


3370 




BNE 


GH2 


;and loop 


4340 




STA 


Y2 




2410 


BNE NOESC ;N0! 


3380 


GHID CLC 


jsignal good 


4350 




LDA 


HDF 


;hex or dec? 


2420 


SEC jsignal abort 


3390 




RTS 




j later. 


4360 




BEQ 


H9 


JHEX 


2430 


RTS ;so long. 


3400 


I 








4370 




JMP 


SDEC 




2440 


NOESC CMP 8126 jdelete? 


3410 


;Get a Nunber 




4380 


H9 


LDY 


80 




2450 


BNE NODEL J nope . 


3420 


i 








4390 


HI 


JSR 


ZFR 




2460 


CPY 80 ;on 1st char? 


3430 


G_HUM LDA Ml 


jhex Mode. 


4400 




STY 


Yl 




2470 


BEQ INLOOP jyes! 


3440 




STA 


IMODE 




4410 




LDA 


MYBUF,Y 


jget a byte 


2480 


LDA 80 jreMove cursor 


3450 




LDY 


84 


;4 chars 


4420 




STA 


FRO 




2490 


STA CINPLOC),Y 


3460 




JSR 


INPUT 


;grab it. 


4430 




JSR 


BIN2HEX 


jto hex 


2500 


DEY ;decrease cntr 


3470 




BCC 


GNK 


;good? 


4440 




INC 


Yl 




2510 


BPL INLOOP ,-and loop 


3480 




RTS 




;no. 


4450 




LDY 


Y2 


jscreen pos Y 


2520 


; 


3490 


GNK 


JSR 


ZFR 


jzap FRO 


4460 




INY 






2530 


NODEL LDX IMODE ;get node? 


3500 




TAY 




;Y = 


4470 




LDA 


LBUFF+2 


;hi byte of hex 


2540 


BEQ IS_OK ;string Mode. 


3510 


G4L00I 


Y jget a char 


4480 




JSR 


ASC2IC 




2550 


AND 8$7F jMask inverse 


3520 




CMP 


8E0L 


;done? 


4490 




STA 


CT) ,Y 


jshow it 


2560 


CMP 8'9+l ;>9? 


3530 




BNE 


TESTIT 


;nope. 


4560 




LDA 


LBUFF+3 


jnow low byte 


2570 


BCC ITS jno. 


3540 


G4G 


CLC 




jsignal good 


4510 




JSR 


ASC2IC 




2580 


AND 8223 ; Make uppercase. 


3550 




RTS 




;spater . 


4520 




INY 






2590 


ITS JSR CHEX ;is legal? 


3560 


j 








4530 




STA 


m,Y 




2600 


CPX 88 jtest X. 


3570 


TE5TIT JSR 


jget value 


4540 




INY 






2610 


BPL I5_0K ; legal! 


3588 




ASL 


FRO 


J*2 


4550 




STY 


Y2 




2620 


BMI INLOOP ;no good. 


3590 




ROL 


FRO + 1 




4560 




CPY 


826 


jend of line? 


2630 


J 


3600 




ASL 


FRO 


J*4 


4570 




BEQ 


H4 


jyes 


2640 


IS_OK CPY MAXLEN ; at Max len? 


3610 




ROL 


FRO + 1 




4580 


H5 


LDY 


Yl 


jend of buffer? 


2650 


BEQ INLOOP ;yes. 


3620 




ASL 


FRO 


;*8 


4590 




CPY 


8$80 




2660 


STA IBUF.Y jno save char 


3630 




ROL 


FRO+1 




4660 




BNE 


HI 


j no 


2670 


JSR ASC2IC ;and put it 


3640 




ASL 


FRO 


J*16 


4610 




RTS 






2680 


STA CINPL0C3,Y Jon screen 


3650 




ROL 


FR0+1 




4620 


H4 


JSR 


ADD40 


jdown 1 line 


2690 


INY jup cntr 


3660 




TXA 




jget value 


4630 




LDA 


82 


jreset LMargin 


2700 


BNE INLOOP jand loop. 


3670 




ORA 


FRO 


jadd to FRO 


4640 




STA 


Y2 




2710 


J 


3680 




STA 


FRO 


jsave it 


4650 




JMP 


H5 




2720 


INDONE STA IBUF,Y J save EOL 


3690 




INY 




jup count 


4660 










2730 


LDA 80 ;erase cursor 


3700 




BNE 


G4L00P 


jand loop 


4670 


jShow Sector in 


DeciMal Mode 


2740 


STA CINPLOC),Y 


3710 


I 








4680 


Jlf 


'tens' digit is inversed 


2750 


CLC ;show good. 


3720 


;CIear out Screen Menory 


4690 


Jthe nunber is over 200. if the 


2760 


RTS jboogie. 


3730 


# 








4700 


; ' units 


digit is inversed the 


2770 


, 


3740 


CLRSCN LDA 80 




4710 


; nuMber 


is between 100 and 200 


2780 


;Erase Input Line 


3750 




LDY 


80 




4720 










2790 


, 


3760 


CLR5 ! 




4730 


SDEC 1 




2800 


ERAINP LDA 80 


3770 




STA 


SM+$01Ofl 


,Y 


4740 




INC 


Y2 


J3 


2810 


LDX 834 


3788 




STA 


SM+$0200 


,Y 


4750 


SD1 


LDA 


8$FF 


jset inverse 


2820 


ER1 STA INPLIN+5,X 


3790 




STA 


5M+$0300 


,Y 


4760 




STA 


XV 


jflag 


2830 


DEX 


3800 




INY 






4770 




LDA 


MYBUF,Y 


jget byte 


2840 


BPL ER1 


3810 




BNE 


CLR5 




4780 




INY 






2850 


RTS 


3820 




LDA 


LMARGN 




4790 




STY 


Yl 


jsave buf pos 


2860 


1 


3830 




STA 


COLCRS 




4800 




CMP 


8200 


jover 200? 


2870 


;Get a String 


3840 




TYA 






4810 




BCC 


DD1 




2880 


t 


3850 




STA 


ROHCRS 




4820 




SEC 




j- 200 


2890 


G_STR LDA 80 


3860 




RTS 






4830 




SBC 


8260 




2900 


STA IMODE 


3870 


, 








4840 




INC 


IV 


jset flag 


2910 


LDY 833 


3880 


jShow the Screen 


Borders 


4850 




INC 


IV 


jto 1 


2920 


JMP INPUT 


3890 


j 








4860 




BNE 


DD3 




2930 


; 


3900 


DOLEFT LDft 


(first line 


4870 


DD1 


CMP 


8160 


j over 160? 


2940 


;Get a Hexstring 


3910 




STA 


T 


jof Menory 


4880 




BCC 


DD3 





JULY A.IM.A.L.O.Q. Computing 



















jfok 






4898 




SEC 




5860 


; Do 


heading of "ATASCII" or 


6830 .WORD SEARCHS ;search 


4900 




SBC »100 




5870 


; "INTERNAL" code 


6840 .WORD SLINKS Mink 8 


4910 




INC IV 


;set flag to 


5880 


; 






6850 .WORD READS 


:read sec 


4920 


DD3 


LDX 8"0 


jdefault '00' 


5890 


MASIN LDX 87 


6860 .WORD WRITES jwrite sec 


4930 




STX TENS 




5900 




LDA 


AIFLAG ;get flag 


6870 .WORD AIFLIP Jflip chars 


4940 




STX UNITS 




5910 




BNE 


IN jno, internal 


6880 .WORD HDFLIP J flip 8's 


4950 


DD5 


CMP 8$0A 


;over 10? 


5920 




LDX 


815 


6890 .WORD HELPME ihelp scrn 


4960 




BCS DD4 


;yes 


5930 


IN 


LDY 


87 ;copy header 


6900 .WORD UNDO 


jundo 


4970 




CLC 




5940 


MAI 


LDA 


INMS,x jon screen 


6910 .WORD CHNSRC J src drive 


4980 




ADC UNITS 


;add units digit 


5950 




STA 


BORDER+30, Y 


6920 .WORD CHNDES ; dest drive 


4990 




STA UNITS 




5960 




DEX 




6930 .WORD KOLOR 


;next hue 


5000 




LDY IV 


;see if any are 


5970 




DEY 




6940 .WORD REFRESH jclear scrn 


5010 




BMI DD2 


; inversed 


5980 




BPL 


MAI 


6950 .WORD D0WN1 


;sec=sec-l 


5020 




LDA UNITS, Y 


;do inverse 


5990 




RTS 




6960 .WORD UP1 


;sec=sec+l 


5030 




ORA 8$80 




6000 


, 






6970 .WORD HEXSTR Jinput flip 


5040 




STA UNITS, Y 




6010 


jDi 


splay the Sector Data 


6980 .WORD TRACES jtrace link 


5050 


DD2 


LDY Y2 


;get screen pos 


6020 


; 






6990 .WORD CHNDEN5 jnew density 


5060 




LDA TENS 


;conuert to 


6030 


5ECINI 


7000 .WORD LUMIN 


j luninance 


5070 




JSR A5C2IC 


;screen code 


6040 




STA 


FRO 


7010 .WORD INTRO 


i Menu screen 


5080 




STA CT),Y 




6050 




LDA 


SECH 


7020 .WORD REFRESH ;clear scrn 


5090 




INY 




6060 




STA 


FRO + 1 


7030 .WORD DMP5CN jprnt scrn 


S1O0 




LDA UNITS 


;sane for 


6070 




LDX 


85 ;at position 5 


7040 ; 




5110 




JSR ASC2IC 


;units digit 


6080 




JSR 


PHI ;put it on. 


7050 {Routines 




5120 




STA CT),Y 




6090 




LDA 


MYBUF+127 ;8 of bytes 


7060 ; 




5130 




INY 


jMoye right 


6100 




STA 


FRO 


7070 ;Show Sector as 


ATASCII CO) or 


5140 




INY 




6110 




LDX 


835 jposit. 35 


7080 {Internal Code CI) 


5150 




STY Y2 




6120 




JSR 


PH2 jput it on. 


7090 ; 




5160 




CPY 827 


;done w/Iine? 


6130 




LDA 


MYBUF+125 ;file 8 


7100 AIFLIP LDA AIFLAG 


5170 




BEG DD6 




6140 




LSR 


A jis in the 


7110 EOR 81 




5180 


DD7 


LDY Yl 


jdone with 


6150 




LSR 


A ; 6 hi bits 


7120 STA AIFLAG 




5190 




CPY «$80 


; sector? 


6160 




STA 


FRO 


7130 JMP ASCINT 




5200 




BNE SD1 




6170 




LDX 


815 jposit. 15 


7140 ; 




5210 




RTS 




6180 




JSR 


PH2 ;display. 


7150 jShow Sector as 


Hex CO) or 


5220 


DD6 


JSR ADD40 


jnext line 


6190 




LDA 


MYBUF+126 jsector link 


7160 ;Decinal CI) data 


5230 




LDA 83 




6200 




STA 


FRO ;low 


7170 j 




5240 




STA Y2 


;reset LMargin 


6210 




LDA 


MYBUF+125 ;sector link 


7180 HDFLIP LDA HDF 




5250 




BNE DD7 




6220 




AND 


83 ;high 


7190 EOR 81 




5260 


DD4 


SEC 


;get tens digit 


6230 




STA 


FRO+1 


7200 STA HDF 




5270 




SBC 8$0A 




6240 




LDX 


825 ;posit 25 


7210 JMP SHWSEC 




5280 




INC TENS 




6250 




LDA 


SRCDRv ;get source 


7220 ; 




5290 




BNE DD5 




6260 




ORA 


8$90 jnake inverse 


7230 jEdit the sector 


:Set INP to 


5300 




RTS 




6270 




STA 


DRLIN+5 ;on screen 


7240 jHChex) or S Cstr 


ing) input 


5310 


1 






6280 




LDA 


DESDRU ;dest drive 


7250 ; 




5320 


;5how Data as ATASCII or 


6290 




ORA 


8$90 


7260 EDITS JSR G_NUM 


;get start byte 


5330 


; Internal Code 




6300 




STA 


DRLIN+15 ;on screen 


7270 BCC EE1 




5340 


i 






6310 




LDA 


DENSITY ;disk density 


7280 EDN RTS 




5350 


ASCINT J5R MASIN 


;show type 


6320 




CLC 




7290 EE1 LDA FRO+1 


;is the 8<$80? 


5360 




LDA GL 


;top line 


6330 




ADC 


8$91 


7300 BNE EDN 




5370 




STA T 




6340 




STA 


DRLIN+35 ;on screen 


7310 LDA FR0 




5380 




LDA GH 




6350 




LDY 


HX0R5T ; input node 


7320 CMP 8$80 




5390 




STA T+l 




6360 




LDA 


INPMS,Y ;get letter 


7330 BCS EDN 


;no way. 


5400 




LDX 80 


j data pos 


6370 




STA 


DRLIN+25 ;on screen 


7340 STA FBYTE 


;save it 


5410 


AIM 


LDY 830 


;screen Y 


6380 


, 






7350 JSR ERAINP 


;clear INPLIN 


5420 


AIL 


LDA MYBUF,X 


;get byte 


6390 


;Put Hex 8 on Status Line 


7360 LDA 8$A4 


; a " D ■ 


5430 




STX X2 




6400 


;enter with X = position 


7370 STA INPLIN+3 




5440 




LDX AIFLAG 


; ATASCII or 


6410 


■ 






7380 JSR G_HS 


jget data 


5450 




BNE AIN 


;Internal 


6420 


PHI 


LDY 


81 ; start at dig82 


7390 BCS EDN 




5460 




JSR ASC2IC 


; convert 


6430 




BNE 


P_IN 


7400 STY Yl 


jsave length 


5470 


AIN 


LDX X2 




6440 


PH2 


LDY 


82 ; digit 83 


7410 DEY 




5480 




STA CT),Y 


jshow it 


6450 


P_IN STY TMP1 ;save Y 


7420 MIC LDA IBUF,Y 


;»ake the data 


5490 




INX 




6460 




STX 


TMP2 ;save X 


7430 LDX AIFLAG 


JASCICODE 


5500 




INY 




6470 




JSR 


BIN2HEX ;nake hex 


7440 BEQ MIO 




5510 




CPY 8$26 


;end of line? 


6480 




LDY 


TMP1 /restore X&Y 


7450 JSR ASC2IC 




5520 




BNE AIL 




6490 




LDX 


TMP2 


7460 MIO STA IBUF.Y 




5530 




JSR ADD40 


jnext line 


6500 


P_LP 1 


7470 DEY 




5540 




CPX 8$80 


;end of buffer? 


6510 




JSR 


ASC2IC jwake ICODE 


7480 BPL MIC 




5550 




BNE AIM 




6520 




ORA 


8$80 ; inverse it 


7490 EE2 LDY FBYTE 


;y= pos 


5560 




RTS 




6530 




STA 


STATUS, X jon screen 


7500 LDX 80 




5570 


f 






6540 




INX 




7510 CPM LDA IBUF,X 


■get byte 


5580 


;5how it as ATASCII on screen 


6550 




INY 




7520 EE3 STA MYBUF, Y 


store it 


5590 


■ 






6560 




CPY 


84 j at end? 


7530 INX 




5600 


A5C2IC JSR 




6570 




BNE 


P_LP ;no. 


7540 INY 




5610 




ORA A2I,X 




6580 




J MP 


ZFR ;zap FRO 


7550 CPY 8$80 


end of sec? 


5620 




LDX XI 




6590 


f 






7560 BEO. ERT 


yes . 


5630 




RTS 




6600 


J Copy DSBUF to MYBUF 


7570 CPX Yl 


end of data? 


5640 


i 






6610 


, 






7580 BNE CPM 


no. 


5650 


;5how as Internal Code on screen 


6620 


TOMYBUF 


LDY 8$7F 


7590 ERT JMP 5H0WALL 


show changes 


5660 


* 






6630 


TOM 


LDA 


DSBUF, Y 


7600 ; 




5670 


IC2ASC JSR BITER 




6640 




STA 


MYBUF, Y 


7610 jDeciMal to Hex converter 


5680 




ORA I2A,X 




6650 




DEY 




7620 ; 




5690 




LDX XI 




6660 




BPL 


TOM 


7630 DECH LDA 81 


hex node 


5700 




RTS 




6670 




RTS 




7640 STA IMODE 




5710 


; 






6680 


i 






7650 LDY 85 , 


5 chars nax 


5720 


;Do 


bit work 




6690 


; Tables 


for ATASCII and 


7660 JSR INPUT 




5730 


} 






6700 


{Internal code conversions 


7670 BCC G_IB 




5740 


BITER STX XI 




6710 


• 






7680 RTS 




5750 




PHA 




6720 


I2A 


.BYTE S20, $40, $00, $60 


7690 G_IB LDA 8 <IBUF 


; point FP 


5760 




ROL A 




6730 


A2I 


.BYTE $40, $O0, $28, $60 


7700 STA INBUFF , 


to buffer 


5770 




ROL A 




6740 


; 






7710 LDA 8 >IBUF 




5780 




ROL A 




6750 


;The Connand Table 


7720 STA INBUFF+1 




5790 




ROL A 




6760 


, 






7730 LDA 80 




5800 




AND 83 




6770 


COMTAB 


WORD EDITS JblOCk edit 


7740 STA CIX 




5810 




TAX 




6780 




.WORD HX2DEC Jhex>dec 


7750 JSR AFP , 


ASCII to FP 


5820 




PLA 




6790 




■WORD DECH ;dec>hex 


7760 JSR FPI , 


FP to Integer 


5830 




AND 8$9F 




6800 




■WORD BFILL ;blOCk fill 


7770 BCC U5 , 


CLC->good . 


5840 




RTS 




6810 




.WORD EORS ;eor sector 


7780 J5R ZFR , 


■0000' on error 


5858 


/ 






6820 




.WORD CHNFIL ; file 8 


7790 U5 LDA FRO+1 





JULY A.N.A.L.O.B. Computing 




7800 
7810 
7820 
7830 
7840 
7850 
7860 
7870 
7880 
7890 
7900 
7910 
7920 
7930 
7940 
7950 
7960 
7970 
7980 
7990 
8000 
8010 
8020 
8030 
8040 
8050 
8060 
8070 
8080 
8090 
8100 
8110 
8120 
8130 
8140 
8150 
8160 
8170 
8180 
8190 
8200 
8210 
8220 
8230 
8240 
8250 
8260 
8270 
8280 
8290 
8300 
8310 
8320 
8330 
8340 
8350 
8360 
8370 
8380 
8390 
8400 
8410 
8420 
8430 
8440 
8450 
8460 
8470 
8480 
8490 
8500 
8510 
8520 
8530 
8540 
8550 
8560 
8570 
8580 
8590 
8600 
8610 
8620 
8630 
8640 
8650 
8660 
8670 
8680 
8690 
8700 
8710 
8720 
8730 
8740 
8750 
8760 



;save the tt 



; force decinal 
jposit 8 

; insert = 



;get St back 



PHA 

LDA FRO 

PHn 

LDX ttl 

STX HXDC 

DEX 

J5R COPYMUM 

INX 

LDA tt' = 

STA IBUF,X 

INX 

PLA 

STA FRO 

PLn 

STn FRB+1 

JSR COP-ALL ;copy hex 

J MP SHO-IT 
i 
;Hex to Decinal Converter 

HX2DEC JSR G-NUM ;get nunber 

BCS ANRTS 
i 

ldx ttl ; force decinal 

STX HXDC 

dex ; insert hex 

JSR cop_all 

LDA tt' = ; insert ,, =" 

STA IBUF+5 

LDX »6 J posit 86 

JSR COPYNUM jcopy nunber 
sho_it LDA ibuf,x ;put the str 

JSR A5C2IC ;on the 

STn LINEQ.X ;screen. 

DEX 

BPL SHO-IT 
ANRTS RT5 

;Copy all 4 Hex digits to IBUF 

COP-ALL STX TMP1 
JSR BIN2HEX 
LDX TMP1 
LDA tt'5 
STA IBUF,X 
INX 
JMP ALL 

;B10Ck Fill 

BFILL JSR G-NUM 

BCC BFB 

RT5 
BFB LDA FRO 

BFC LDY 8$7F ;fill nybuf 
BFF STA MYBUF,Y ;with value 

DEY 

BPL BFF 
BFD JMP SHOMALL ;ShOW it 
i 

;Convert Hex to Binary value 
; returns with A = value 

HEX2BIN LDA HXL ;check if 
JSR CHEX 



STX HXL 
LDA HXH 
JSR CHEX 
TXA 
ASL A 
ASL A 
ASL A 
ASL A 
ORA HXL 
RTS 



;sane for hi 
;xl6 



;add low 
;=A 



;5ee if digit is in the Hex 
;table 

CHEX LDX 8$0F ; 16 digits 
HH4 CMP HXTABjX 

BEG HH3 

DEX 

BPL HH4 
HH3 RTS 
i 

;Sets flag for Hex or 
;5tring (Character} Input 

HEXSTR LDA HXORST 

EOR 81 

STA HXORST 

JMP SECINF 
i 
;eor the data with a byte 

EORS JSR G-NUM 



8770 
8780 
8790 
8800 
8810 
8820 
8830 
8840 
8850 
8860 
8870 
8880 
8890 
8900 
8910 
8920 
8930 
8940 
8950 
8960 
8970 
8980 
8990 
9000 
9010 
9020 
9030 
9040 
9050 
9060 
9070 
9080 
9090 
9100 
9110 
9120 
9130 
9140 
9150 
9160 
9170 
9180 
9190 
9200 
9210 
9220 
9230 
9240 
9250 
9260 
9270 
9280 
9290 
9300 
9310 
9320 
9330 
9340 
9350 
9360 
9370 
9380 
9390 
9400 
9410 
9420 
9430 
9440 
9450 
9460 
9470 
9480 
9490 
9500 
9S10 
9520 
9530 
9540 
9550 
9560 
9570 
9580 
9590 
9600 
9610 
9620 
9630 
9640 
9650 
9660 
9670 
9680 
9690 
9700 
9710 
9720 
9730 



BCC E-GO 

RTS 
E_G0 LDY 8$7F ;eor whole 
ERP LDA MYBUF.Y JSeCtor 

EOR FRO 

STA MYBUF,Y 

DEY 

BPL ERP 

JMP SHOMALL ; show it 
t 

jshow sector Data, Characters 
jand Sector infornation 

SHOMALL JSR SHH5EC ; data 

JSR ASCINT characters 
JMP SECINF jinofrnation 

; Install the HELP screen 

HELPME LDA tt <HELPDL ; change 
STA OLDD .-display list 
LDA tt >HELPDL ;part way 
STA OLDD+1 jdown 
PLA 
PLA 
JMP GETCOM 

i 

;Restore the Sector's Data 

UNDO JSR TOMYBUF 
JMP SHOMALL 

;Erase text in Window 

ERATXT LDY tt39 

LDA ttO 
ET1 STA LINE0,Y 

DEY 

BPL ET1 

RTS 
i 
JChange Source Drive 

CHNSRC LDX 5RCDRU 

JSR DRV-UP 

STX SRCDRU 

JMP SECINF 
i 

;Change Destination Drive 

CHNDES LDX DESDRU 
JSR DRV-UP 
STX DESDRU 
JMP SECINF 

;Increnent Drive Nunber 

DRU-UP INX 

CPX tt9 

BNE SHX 

LDX ttl 
SHX RTS 
i 

JChange the File Nunber 



CHNFIL JSR G-NUM 

BCC FF1 
FF3 RTS 
FF1 LDA FRO+1 

BNE FF3 

LDA FRO 

CMP tt64 

BCC FF4 

LDY 8181 

JMP IOERR 
FF4 ASL A 

ASL A 

STA FRO 



;0-63 allowed 



Jhigh 6 bits 
;used for file 
; nunber 

LDA MYBUF+125 jget byte 
AND 83 ;nask out low 
ORA FRO jadd in File tt 
STA MYBUF+125 
JMP SHOMALL JShOW it 

j 

;Get Hex or String 

G_HS LDA HXORST 
BNE G_ST 
JMP G-HEX 

G_ST JMP G-STR 

i 

jSearch for Hex or String. 

;String can be either 

;ATASCII or Internal Code 

5EARCH5 JSR G_HS ;get data 



9740 BCC A02 

9750 AOR RTS 

9760 j 

9770 A02 CPY ttO 

9780 BEQ IS-OLD? 

9790 STY SRFLG 

9800 LDY 844 

9810 AOCP LDA IBUF,Y ;to the save 

9820 STA SRBUF.Y ;buffer for 

9830 DEY 

9840 BPL AOCP 

9850 BMI AORI 

9860 IS-OLD? LDA SRFLG ;old data? 

9870 BEQ AOR 

9880 ; 

9890 AORI LDY ttO 

9900 ALI LDA 5RBUF,Y ; internal 



; just EOL? 

;yup, check buf 

;save length 

;copy bufr over 



jnext tine 



;no way! 
;convert to 



LDX AIFLAG 

BEQ A_ST 

JSR ASC2IC 
A_ST STA IBUF,Y 
INY 

CPY SRFLG 

BNE ALI 



9910 

9920 

9930 

9940 

9950 

9960 

9970 

9980 S 

9990 S5TR LDA 8$8i 

010000 SEC 

010010 5BC SRFLG 

010020 STA MAXLEN 

010030 LDY no 

010040 5EL LDX ttO 

010050 STY Yl 



010060 TRYF LDA IBUF.X jget buffer 



010070 

010080 

010090 

010100 

010110 

010120 

010130 

010140 

010150 

010160 ; 

010170 GS-UP LDY Yl 

INY 

CPY MAXLEN 

BNE SEL 

RTS 



CMP MYBUF,Y 

BNE GS-UP 

INY 

INX 

CPX SRFLG 

BNE TRYF 

LDA Yl 

STA FBYTE 

JSR SHO-POS 



conpute the 
last posit we 
can look at. 
save it. 
sec pntr 
bufr pntr 
save it 



in sector? 
no increnent. 
get next char 

at end? 
no yet . . . 
first byte 
save 
sho natch! 



get posit 
increnent 
at end? 
no loop, 
so long 



010180 

010190 

010200 

010210 

010220 

010230 ;find place on screen to 

010240 ;nark the natch 

010250 ; 

010260 SHO-POS LDA FBYTE ;byte tt 



010270 

010280 

010290 

010300 

010310 

010320 

010330 

010340 

010350 

010360 

010370 

010380 

010390 

010400 

010410 

010420 

010430 

010440 

010450 

010460 

010470 

010480 

010490 

010500 

010510 

010520 

010530 ; 

010540 ;Refresh the screen to 

010550 ; erase the arrows 

010560 ; 

010570 REFRESH JSR CLRSCN 

010580 JSR DOLEFT 

010590 JMP SHOMALL 

010600 ; 

010610 jChange Screen Color 

010620 ; 

010630 KOLOR LDA C0L0R2 

010640 CLC 

010650 ADC 8$10 

010660 STA C0L0R2 

010670 RTS 

010680 ; 

010690 ; Change Luninance 

010700 ; 



LSR A 

LSR A 

LSR A 

TAY 

LDA GL,Y 

STA T 

LDA GH,Y 

STA T+l 

TYA 

ASL A 

ASL A 

ASL A 

STA TMP3 

LDA FBYTE 

SEC 

SBC TMP3 

STA TMP3 

ASL A 

CLC 

ADC TMP3 

CLC 

ADC tt2 

TAY 

LDA ttl27 

STA CT1,Y 

RTS 



;div by 8 
;to get row 



;get nenory 

; posit ion 



;x8 

;get renainder 

;go right by 
; threes ! 
;x2 

;x3 

; f or Margin 

; wedge 
;show it 



JULY A.N.A.L.O.O. Computing 













§Wk 








010710 


LUMIN 


LDA C0L0R2 


011680 


BCS T-NO 




012650 


LDA FRO jcopy new sec8 


010720 


TAX 




011690 


T_L0 LDA SECL 


;test lo. 


012660 


STA SECL ;into pntr 


010730 


AND 


8$F0 


011700 


CMP SDLO,X 




012670 


LDA FRO+1 


010740 


STA 


CTMP 


011710 


BCC S_0K 




012680 


STA SECH 


010750 


TXA 




011720 


T_N0 LDA SDLO, 


X ;nove Max 8 


012690 


WR2 LDA SECL ; use old sector 


010760 


CLC 




011730 


STA SECL 


; into sec 8 


012700 


STA FRO ;nunber. 


010770 


ADC 


82 


011740 


LDA 5DHI,X 




012710 


LDA SECH 


010780 


AND 


8$0F 


011750 


STA SECH 




012720 


STA FRO+1 


010790 


ORA 


CTMP 


011760 


S_OK LDA SECL 


;save the 


012730 


JSR BIN2HEX ;nake hex 


010300 


STA 


C0L0R2 


011770 


STA DAUX1 


jsector in SIO 


012740 


LDY 83 ;copy to the 


010810 


RTS 




011780 


LDA SECH 


;work area 


012750 


WR3 LDA LBUFF,Y ;nessage. 


010820 


I 




011790 


STA DAUX2 




012760 


STA SUREMS+il,Y 


010830 


jChange Sector Link 


011800 


LDA 8$80 


;128 bytes 


012770 


DEY 


010840 


i 




011810 


STA DBYTLO 




012780 


BPL WR3 


010850 


5LINK5 J5R G_NUM 


011820 


LDA 80 




012790 


LDA DE5DRU ;put in the 


010860 


BCC 


SL_G 


011830 


STA DBYTHI 




012800 


ORA 8$30 Jdestn drive 


010870 


RTS 




011840 


JMP DSKINU 


j do SIO 


012810 


STA SUREMS+20 


010880 


SL_G LDA FRO ;chk for 


011850 


i 




012820 


LDY 80 


010890 


ORA 


FRO + 1 


011860 


jFornat an I/O 


Error 8 


012830 


WR4 LDA SUREMS,Y 


010900 


BED 


LN_ER 


011870 


i 




012840 


BEQ GYN 


010910 


LDA 


FRO + 1 


011880 


F_ERR JSR ZFR 


;zap FRO 


012850 


JSR ASC2IC 


010920 


LDX 


DENSITY ,'nake sure the 


011890 


STY FRO 


jsave err 8 


012860 


STA CINPL0CJ,Y 


010930 


CMP 


SDHI,X ;new link is 


0119O0 


LDX ttl 


; force dec inal 


012870 


INY 


010940 


BCC 


G_LNK j allowed in 


011910 


STX HXDC 




012880 


BNE HR4 


010950 


BEQ 


G_TLO ;this density. 


011920 


LDX tt7 


;copy error Hsg 


012890 


GYN JSR GETKEY 


010960 


BC5 


LN_ER 


011930 


DS.l LDA ERMS, 


X ;to buffer 


012900 


CMP 827 


010970 


G_TL0 


LDA FRO 


011940 


STA IBUF,X 




012910 


BEQ MRU 


010980 


CMP 


SDLO,X 


011950 


DEX 




012920 


AND tt$7F 


010990 


BCC 


G_LNK 


011960 


BPL DS.l 




012930 


CMP 8'Y 


011000 


BEQ 


G_LNK 


011970 


LDX 88 


jcopy nunber in 


012940 


BEQ WR5 


011010 


BCS 


LN_ER 


011980 


J5R COPYNUM 




012950 


CMP 8'M 


011020 


G_LNK 


LDA fro jstore it 


011990 


LDA no 




012960 


BNE GYN 


011030 


STA 


MYBUF+126 


012000 


STA IBUF+1,X 




012970 


BEQ MRU 


011040 


LDA 


FRO + 1 


012010 


RTS 




012980 


; 


011050 


AND 


tt3 


012020 


i 




012990 


MRS JSR WRITIT 


011060 


STA 


FRO 


012030 


;Disk editor Error Routine 


013000 


BPL MRU 


011070 


LDA 


MYBUF+125 jnask Off 


012040 


i 




013010 


JSR IOERR 


011080 


AND 


8$FC ; file 8 


012050 


IOERR JSR F_ERR 


013020 


WRU JMP EOFT ;restore 


011090 


ORA 


FRO+1 ;add in link 


012060 


JMP SHO_IT 


;show error. 


013030 


; 


011100 


STA 


MYBUF+125 


012070 


i 




013040 


jChange Density 


011110 


JMP 


5H0WALL ;shOW it 


012080 


;Read Down One 


Sector 


013050 


j 


011120 


j 




012090 


i 




013060 


CHNDEN5 LDA DENSITY 


011130 


LN_ER 


LDY 8180 


012100 


D0HN1 LDA SECH 




013070 


EOR 81 


011140 


JMP 


IOERR 


012110 


BNE DA2 


; ok 


013080 


STA DENSITY 


011150 


j 




012120 


LDA SECL 




013090 


JMP SECINF 


011160 


; Read 


a Sector 


012130 


CMP 82 


;if LT 2 no 


013100 


I 


011170 


READS 
BCC 


JSR G_NUM ;get sector 
G_RD 


012140 
012150 
012160 


BCS DA2 
RTS 
DA2 DEC SECL 


; decrease 
;go down 1 


013110 
013120 
013130 


BORDER .5BYTE "^■CEXZKEX23 > ' 


011180 


.5BYTE "p J MJ^M^.Tn^M^MH" 


011190 


.SBYTE 'ifH'rtliM " 


011200 


RTS 
G_RD LDA FRO ; just EOL? 


012170 
012180 


LDA SECL 
CMP 8$FF 




013140 
013150 


* 


011210 


inms .SBYTE "H!lid:l!MI" 


011220 


ORA 


FRO+1 


012190 


BNE DAI 




013160 


ATMS .SBYTE "[iM',>«f«" 


011230 


BEQ 


DORED ;yes, reread 


012200 


DEC SECH 




013170 


INPMS .SBYTE "(IE" 


011240 


LDA 


FRO jcopy the new 


012210 


DAI JMP DORED 


;read it 


013188 


SDLO .BYTE $D0,$10 


011250 


STA 


SECL ;8 to area 


012220 


i 




013190 


SDHI .BYTE $02, $04 


011260 


LDA 


FRO + 1 


012230 


;Read Up One Sector 


013200 


ERMS .BYTE "Error 8 " 


011270 


STA 


SECH 


012240 


i 




013210 


/ 


011280 


• 




012250 


UPl INC SECL 




013220 


;Left Border 


011290 


DORED 
BPL 


JSR READIT ;do the read 
G.Q 


012260 
012270 


BNE UPA 
INC SECH 




013230 
013240 


i 


011300 


1 FFTB .SBYTF "WMiWHMMYW 


011310 


JSR 


IOERR 


012280 


UPA JMP DORED 




013250 


. sbyte "(iH!r.iii*fcfciii5i*WsWi)" 


011320 


G.Q JSR TOMYBUF ; Hove to Hybuf 


012290 


i 




013260 


, 


011330 


JMP 


SHOWALL ;shOW it 


012300 


jTrace a file 




013270 


;Uarious Messages 8 Pronpts 


011340 


■ 




012310 


i 




013280 


; 


011350 


;Set up 


012320 


TRACE5 LDA SECL J save cur 


013290 


SUREMS .BYTE "Write SEC; 0000" 


011360 






012330 


STA SSECL 


; nunber just 


013300 


.BYTE " to D : Y/N?",B 


011370 


READIT LDA SRCDRU ;sour*ce drv 


012340 


LDA SECH 


;in case 


013310 


HXTAB .BYTE "0123456789ABCDEF" 


011380 


STA 


DUNIT 


012350 


STA SSECH 




013320 


HTHT .SBYTE "I*[?:»:IJ«>1ITI" 


011390 


LDA 


8 >DSBUF jread into 


012360 


LDA MYBUF+125 ; get link 


013338 


.SBYTE "MttH^TTSitttii" 


011400 


STA 


DBUFHI Jdsbuf 


012370 


AND 83 


;hi 


01334G 


.SBYTE "H«aWilfl:l*ri" 


011410 


LDA 


n <DSBUF 


012380 


STA SECH 




013350 


.SBYTE "HIZH^H" 


011420 


STA 


DBUFLO 


012390 


LDA MYBUF+126 ;and low 






011430 
011440 


LDA 
BNE 


8$52 
REDMRT 


012400 
012410 


STA SECL 
ORA SECH 




LISTING 4: ASSEMBLY 


011450 


■ 




012420 


BNE D_R 


; i f end of 






011460 


;Set up Nrite 


012430 


LDY 8182 




0100 
0110 


SAUE8D1DMPT3.M65 


011470 


' t 




012440 


JMP IOERR 






011480 


WRITIT LDA DE5DRU Jdest. drv 


012450 


D_R JMP DORED 


; trace 


0120 




011490 


STA 


DUNIT 


012460 


J 




0130 


Met'iory disassembler 


011500 


LDA 


tt >MYBUF jwrite out 


012470 


EOFT LDA SSECL 


jreset current 


0140 




011510 


STA 


DBUFHI ;nybuf 


012480 


STA SECL 


;sector nunber 


0150 


by: Bryan Schappel 


011520 


LDA 


tt <MYBUF 


012490 


LDA SSECH 




0160 
0170 




011530 


STA 


DBUFLO 


012500 


STA SECH 






011540 


LDA 


«S57 


012510 


RTS 




0180 




011550 


. 




012520 


j 




0190 1 


>isamem LDY 80 ;zero Y 


011560 


jgeneral read, write 


012530 


;Write a Sector 


0200 


STY HXDC Jin hex 


011570 






012540 


j 




0210 


5TY BYTES 


011580 


REDMRT STA DCOMND ; save end 


012550 


WRITES JSR G_NUM ; sector to 


0220 


JSR GETBYT ; get opcode 


011590 


LDA 


SECL ;sector 8? 


012560 


BCC WR1 


; write. 


0230 


BPL D.l ;error? 


011600 


ORA 


SECH 


012570 


RTS 




0240 


JMP D_OUER ;yes! 


011610 


BNE 


C_D ;no. 


012580 


WR1 LDA SECL 


;save old 8 


0250 




011620 


INC 


SECL :now sector 1. 


012590 


STA SSECL 


; for later . 


0260 [ 


>.l STA OP ;save op 


011630 


C_D LDX DENSITY ) test to be 


012600 


LDA SECH 




0270 


LDY 80 jzero Y 


011640 


LDA 


SECH ;sure that the 


012610 


STA SSECH 




0280 1 


■NDOP CMP OPCODE, Y ;is op in 


011650 


CMP 


SDHI,x jsector is on 


012620 


LDA FRO 


jsector 0? 


0290 


BEQ HAUOP ;the opcode 


011660 


BCC 


S_OK ;the disk. 


012630 


ORA FRO+1 




0300 


INY ;table? 


011670 


BEQ 


T_L0 


012640 


BEQ WR2 


; yes. 


0310 


CPY 8151 ;151 yet? 



JULY A.N.A.L.O.Q. Computing 



41 













■Jmi 










0320 


BNE 


FNDOP 


;no. 


1290 


LDX 8$20 


jslan IOCB 82 


2260 


LDA CINDR),Y 


jget label nane 


0330 








1300 


JSR CLOSE 




2270 


STA IBUF,X j 


froM the table 


0340 


HAVOP 5TY Y2 


jsave Y 


1310 


PRINT ALL. 


DONE ;done Mess, 


2280 


BPL C-CP , 


and insert into 


0350 


JSR 


ZBUF 


;clear buffer 


1320 


JSR GET-RET 


;get a return 


2290 


AND 8S7F , 


disa line. 


0360 


LDO 


fiDDR 


;copy addr 


1330 


JMP INTRO 


;goto intro, 


2300 


STA IBUF,X 




0370 


STA 


FRO 


jto FP 


1340 , 






2310 


LDA ADD-ON 


exact natch? 


0380 


LDA 


fiDDR+1 




1350 , 


Innediate Mode 




2320 


BNE PLUS J 


no . 


0390 


STA 


FRQ + 1 




1360 , 






2330 


RTS 


so long. 


0400 


LDX 


tt23 


;pos. 23 


1370 IMMED JSR LOBYTE 


; insert L5B 


2340 


i 




0410 


J5R 


COPYNUM 


jcopy it 


1380 


LDA 8'8 


;a 'W 


2350 


PLUS LDA 8'+ 


put in a ■+■ 


0420 


JSR 


ZFR 


jclear FP 


1390 


STA IBUF+5 


jin buffer 


2360 


STA IBUF+1, X 




0430 


LDfi 


OP 


jget op 


1400 


JSR ZFR 


jzap FRO 


2370 


INX 




0440 


STfi 


FRO 


; in FP 


1410 


LDA DTEMP 


;get byte 


2380 


INX 




0450 


LDX 


»28 


;pos 28 


1420 


STfi FRO 


jinto FRO 


2390 


JSR ZFR 


zap FRO 


0460 


JSR 


COPYNUM 


jcopy it 


1430 


LDX 86 


;and add to the 


2400 


LDfi ftDD_ON 


nake offset to 


0470 


LDfi 


»'; 




1440 


JMP COPYNUM 


; output. 


2410 


STfi FRO 


a decinal 8 


0480 


STfi 


IBUF+22 




1450 






2420 


INC HXDC 




0490 


LDY 


Y2 


jget Y 


1460 NUMBR LDfi 80 


J zero MSB 


2430 


JSR COPYNUM 


[insert nunber 


0500 


CPY 


U151 


jlegal instr? 


1470 


STA DTEMP+1 




2440 


DEC HXDC 


; force hex 


0510 


BNE 


N151 


;yes. 


1480 NUMBR2 LDfi DTEMP 


;put in FRO 


2450 


RTS 


; and leave. 


0520 


i 






1490 


STA FRO 




2460 


j 




0530 


LDY 


87 


jcopy 8 chars 


1500 


LDfi DTEMP+1 




2470 


GO-UP LDA INDR 


jget the label 


0540 


CP.B LDC 


POINTB 


Y ;get char 


1510 


STfi FRO+1 




2480 


CLC 


ipointer and 


0550 


STfi 


IBUF,Y 


;put in buffer 


1520 NUMBR3 LDX 86 


;8 in pos. 6 


2490 


ADC TMP1 


jadd on the len 


0560 


DEY 




jdecrease index 


1530 


LDfi 8 <LAB 


;point to the 


2500 


STA INDR 


of the label so 


0570 


BPL 


CP.B 


; and loop 


1540 


STA INDR 


jlabel table 


2510 


LDA INDR+1 


! we can search 


0580 


JSR 


ZFR 


;zap FRO 


1550 


LDA 8 >LAB 




2520 


ADC 80 


; nore . 


0590 


LDY 


OP 


;get the byte 


1560 


STA INDR+1 




2530 


STA INDR+1 




0600 


STY 


FRO 


;put in FRO 


1570 


LDA LABELS? 


jwant labels? 


2540 


JMP LAB-SRCH 


jloop! 


0610 


JSR 


BIN2HEX 


jnake it hex 


1580 


BNE GO-OUT 


jnope. 


2550 


! 




0620 


LDfi 


81 


; force 1 byte 


1590 






2560 


jZero page 




0630 


STfi 


NBYTE 




1600 


This is the Location Label 


2570 


• 




0640 


LDX 


»8 


;posit 8 


1610 


search algorithn. The label 


2580 


ZPAG JSR LOBYTE 


j do LSB 


0650 


JSR 


SOME 


;copy nuMber 


1620 


data are stored 


as follows: 


2590 


JMP NUMBR 


jadd arg 


0660 


J MP 


fiEOLl 


;and add EOL. 


1630 






2600 


1 




0670 


1 






1640 


hi nybble-byte 


1 loc length 


2610 


jZero page,X 




0680 


N151 LDX OFFSET 


,Y ;MNE offset 


1650 


lo nybble-byte 


1 label length 


2620 


j 




0690 


LDY 


no 


;copy out the 


1660 


location hi, location lo, and 


2630 


ZPAGX JSR LOBYTE 


JLSB 


0700 


fiDMNE LDfi MNE,X 


jMnenonic and 


1670 


the label nane. 




2640 


JSR NUMBR 


jadd arg 


0710 


STfi 


IBUF+1, 


1 ;put in 


1680 






2650 


ADDX2 LDY 81 


J just ,X 


0720 


INX 




; buffer. 


1690 1 


.fiB_SRCH LDY 80 


;zero index 


2660 


fiDDX INX 


jup X 


0730 


INY 






1700 


LDO CINDR3,Y 


jget a byte. 


2670 


fiDDX3 LDfi COMMOX 


,Y jcopy the 


0740 


CPY 


83 


;3 chars? 


1710 


BNE N_FF 


j<>0 then cont. 


2680 


STfi IBUF+1, X 


J ,X into 


0750 


BNE 


fiDMNE 


; no. 


1720 GO_OUT JMP COPYNUM ; just nuMber 


2690 


DEX 


jthe buffer 


0760 


STfi 


NBYTE 




1730 






2700 


DEY 




0770 


LDY 


Y2 


;restore Y 


1740 1 


l-FF PHA 


jsave byte 


2710 


BPL fiDDX3 




0780 


LDfi 


ITYPE,Y 


;get Itype 


1750 


OND 8$0F 


;get label len 


2720 


RTS 


j done . 


0790 


TOY 




{transfer to Y 


1760 


STfi TMP1 


jsave it. 


2730 


I 




0800 


LDO 


NBTfiB,Y 


;get 8 bytes for 


1770 


PLA 


;get byte back 


2740 


; Absolute 




0810 


STfi 


NBYTE 


jthis instr. 


1780 


LSR A 


;shift it down 


2750 


j 




0820 


TYfi 




;restore Ace. 


1790 


LSR 




2760 


ABSOL JSR LOBYTE 


JLSB 


0830 


fiSL 


fi 


;tines 2 


1800 


LSR A 




2770 


JSR HIBYTE 


J MSB 


0840 


TfiY 




;in Y 


1810 


LSR A 




2780 


JMP NUMBR2 


jadd arg 


0850 


LDO 


DCOMT,Y 


;look up the 


1820 


STA ADD-ON 


jsave it 


2790 


t 




0860 


STfi 


DJSR+1 


;routine addr 


1830 


INC ADD-ON 


jadd one. 


2800 


jfibsolute ,X 




0870 


LDO 


DCOMT+1 


Y jan put in 


1840 


INY 


jnove up 2 


2810 


j 




0880 


STO 


DJSR+2 


; JSR 


1850 


INY 


jbytes. 


2820 


ftB50LX JSR fiBSOL 


jset up absol 


0890 


LDX 


NBYTE 


;get 8 bytes 


1860 


LDA CINDR3,Y 


jget addr lo 


2830 


JMP ADDX2 


jcopy in ,X 


0900 


DEX 




jsub 1. 


1870 


STA LOC-S 


jsave it. 


2840 


1 




0910 


BEQ 


DJSR 


jif 0, skip! 


1880 


CLC 


jadd on location 


2850 


jfibsolute ,Y 




0920 


JSR 


GETBYT 


jget next one 


1890 


ADC ADD-ON 


j length & save . 


2860 


I 




0930 


BMI 


D-OVER 


joops, error. 


1900 


STA LOC-E 




2870 


AB50LY JSR ABSOL 


jdo absol 


0940 


STfi 


DTEMP 


jsave byte 


1910 


DEY 


Jdown index 


2880 


ACY LDA 8S2C 


j a conna 


0950 


LDX 


NBYTE 


;get count again 


1920 


LDA CINDR3,Y 


jget addr hi 


2890 


STA IBUF+1,X 


jin buf 


0960 


DEX 




JSUb 2. 


1930 


STA LOC-5+1 


jsave 


2900 


LDA 8"Y 


ja Y 


0970 


DEX 






1940 


ADC 80 


jadd carry 


2910 


STA IBUF+2, X 


Jin buf 


0980 


BEQ 


DJSR 


;if 0, skip 


1950 


STA LOC-E+1 


j and store. 


2920 


RTS 


j done 


0990 


JSR 


GETBYT 


jget 3rd byte 


1960 






2930 


I 




1000 


BMI 


D-OVER 


;oops, error. 


1970 


LDA DTEMP+1 


jinstr hi 


2940 


;lndirect X 




1010 


STfi 


DTEMP+1 


jsave this byte 


1980 


CMP LOC-S+1 


jequal to lochi? 


2950 


t 




1020 


j 






1990 


BNE N.TST 


jno . 


2960 


INDX LDA 80 


J no MSB 


1030 


DJSR JSR SFFFF 


jgo connand! 


2000 


LDA DTEMP 


jtest lo 


2970 


STA DTEMP+1 




1040 


AE0L1 LDY «39 


;now insert 


2010 


CMP LOC-S 




2980 


JSR LOBYTE 


Jdo LSB 


1050 


ftE0L3 LDfi IBUF, 


Y ;the EOL 


2020 


BEQ D-CP 


jexact natch! 


2990 


JSR OPENP 


j add open ' £ ■ 


1060 


CMP 


»32 


; character 


2030 






3000 


INX 


jup X 


1070 


BNE 


fiE0L2 




2040 N.T5T LDfi DTEMP+1 ;now we see if 


3010 


LDY 82 


j3 bytes 


1080 


DEY 






2050 


CMP LOC-E+1 


jthe instr addr 


3020 


BNE ADDX 


jcopy ■ ,X3 ■ 


1090 


BPL 


OE0L3 




2060 


BEQ T5T.L 


;is in the range 


3030 


1 




1100 


fiE0L2 LDO ttEOL 




2070 


BCS GO-UP 


jof the location 


3040 


JIndirect Y 




1110 


STfi 


IBUF+1, 


Y 


2080 


rST.L LDA DTEMP 




3050 


I 




1120 


LDfi 


no 




2090 


CMP LOC-E 




3060 


INDY LDA 80 


j no MSB 


1130 


STfi 


IBUF+2, 


Y 


2100 


BCS GO-UP 




3070 


STA DTEMP+1 




1140 


LDfi 


fiDDR 


;now add the 


2110 


1 




3080 


JSR LOBYTE 


Jdo LSB 


1150 


CLC 




jnunber of 


2120 


LDA DTEMP+1 


jtest hi 


3090 


JSR OPENP 


j left C 


1160 


fiDC 


MBYTE 


;byte to the 


2130 


CMP LOC-S+1 




3100 


LDY 82 


jcopy in the 


1170 


STfi 


fiDDR 


jadr pointer 


2140 


BCC GO_OUT 


jnot in range 


3110 


ADDY LDA COMMflY, 


Y j 'J.Y- 


1180 


BCC 


AE1 


;to get next 


2150 


LDA DTEMP 


jtest lo 


3120 


STfi IBUF+1, X 




1190 


INC 


ODDR+1 


; instr addr. 


2160 


CMP LOC-S 




3130 


INX 




1200 


fiEl RT5 




;bye. 


2170 


BCC GO-OUT 


jnot in range 


3140 


DEY 




1210 


l 






2180 


>_CP SEC 


jeale actual 


3150 


BPL ftDDY 




1220 


;DisasseMbly Over 


2190 


SBC LOC-S 


joffset for the 


3160 


RTS 


(done 


1230 


; 






2200 


STA ADD-ON 


j +x add on. 


3170 


, 




1240 


D-OVER 


JSR fiNY_ 


LEFT jsend extra. 


2210 






3180 


jficcunulator Mode 


1250 


INC 


SFLfiG 


;set swap flag 


2220 


DEX 


jposit S 


3190 


j 




1260 


JSR 


SEND-OUT jwrite buffer 


2230 


LDY 82 


jstart at pos 2 


3200 


fiCCUM LDA 8'A 


■an 'A' 


1270 


LDX 


B$10 


jslan IOCB ttl 


2240 


:_cp INY 


JUP Y 


3210 


STA IBUF+5 


in buffer 


1280 


JSR 


CLOSE 




2250 


INX 


jup X 


3220 


RTS 


; done 



JULY A.N.A.L.O.Q. Computing 















0k 










3230 


i 




4200 


STA 


IBUF,X 




5170 


LDA 83 


;open connand 


3248 


;Bnanch instructions 


4210 


BPL 


CNLOOP 




5180 


STA ICC0M,X 




3250 


/ 




4220 


AND 


8$7F 


jnask bit 7 


5190 


LDA 8 <SRCFILE :point to the 


3260 


RELA J5R LOBVTE 


;put LSB 


4230 


STA 


IBUF.X 




5200 


STA ICBAL,X 


isource file- 


3270 


INC MBYTE 


JMake 3 byte 


4240 


RTS 




; leave 


5210 


LDA 8 >SRCFILE inane. 


3280 


J5R ZFR 


jzero FRO 


4250 


f 






5220 


STA ICBAH,X 




3290 


LDA DTEMP 


;get operand 


4260 


INHEX JSR BIN2HEX j nake hex 


5230 


LDA 84 


;read only. 


3300 


BPL NOBACK 


;not inverse 


4270 


LDX 


CNTLO 


;get pos 


5240 


STA AUK1,X 




3310 


AND 8$7F 


;nask inverse 


4280 


INX 




;up it. 


S2S0 


LDA 80 




3320 


EOR 8$7F 


jflip it 


4290 


CPX 


823 




5260 


STA AUK2,X 




3330 


CLC 


;add a 1 


4300 


BEQ 


ALL 


J if 25 do all 


5270 


STA BYTCNT 


jzero byte cnt 


3340 


ADC Kl 




4310 


CPX 


821 


;is X => 30? 


5280 


STA BYTCNT+J 




3350 


STA DINS+1 


jsave it 


4320 


BCC 


ARG 


;yes. 


5290 


JSR CIOV 


jopen it! 


3360 


JMP TOFP 


j done 


4330 


SOME LDA LBUFF+2 ;no. just copy 


5300 


BMI INERR 


; oops . 


3370 


NOBACK STA DINS+1 


4340 


STA 


IBUF,X 


;the LSB part 


5310 


JSR GET. TWO 


;get file header 


3380 


TOFP LDA DTEMP 


; operand 


4350 


INX 




;of the Hex 


5320 


BMI INERR 


jenpty file! 


3390 


BPL FORWARD 


;bran forward 


4360 


LDA 


LBUFF+3 


; nunber. 


5330 


JSR CHKFF 


; is it binary? 


3400 


LDA ADDR 


jnow subtract 


4370 


STA 


IBUF,X 




5340 


BNE CIO.B 


; no ! 


3410 


SEC 


; f roM addr 


4380 


RTS 




;bye. 


5350 


LDY 81 


jsignal good 


3420 


SBC DINS+1 


;to find out 


4390 


ARG LDA 


tt'$ 


; install a '$■ 


5360 


RTS 




3430 


STA FRO 


jwhere this 


4400 


STA 


IBUF.X 




5370 


CIO.B LDY 8152 


;not binary file 


3440 


LDA ADDR+1 


jbranch goes. 


4410 


INX 




;up X 


5380 


; 




3450 


SBC «0 




4420 


LDA 


NBYTE 


;Get 8 of bytes 


5390 


; Input error 




3460 


STA FRO+1 




4430 


CMP 


82 


;is it 2? 


5400 


■ 




3470 


JMP BACK 


;done. 


4440 


BEQ 


SOME 


;no. 


5410 


INERR CPY 8136 


J EOF? 


3480 


FORWARD CLC 


;add 8 to 


4450 


ALL LDY 


88 


;no. copy it 


5420 


BNE PI 


;no, show error 


3490 


ADC ADDR 


; addr to calc 


4460 


ALOOP LDA LBUFF, 


Y ;all to buf 


5430 


LDA 80 


jkill instr 


3500 


STA FRO 


; forward branch 


4478 


STA 


IBUF,X 




5440 


STA BYTES 




3510 


LDA ADDR+1 




4488 


INX 






5450 


JMP D_0VER 


;and exit. 


3520 


ADC no 




4490 


INY 






5460 


PI JSR F-ERR 




3530 


STA FRO+1 




4500 


CPY 


84 


jdone yet? 


5470 


PRINT IN_P 


jprint INPUT 


3540 


BACK LDA 82 


;now add a Z 


4510 


BNE 


ALOOP 


; nope. 


5480 


PRINT IBUF 




3550 


CLC 


;to skip the 


4528 


DEX 




jdec X 


5490 


PRINT ALL. 


DONE+10 


3560 


ADC FRO 


; instruction 


4530 


RTS 




;so long. 


5508 


JSR GET_RET 




3570 


STA DTEMP 


; address 


4540 


i 






5518 


JMP D_OVER 




3580 


STA FR8 




4558 


; Binary 


to hexadecinal 


5520 


i 




3590 


LDA FR8+1 




4568 


i 






5530 


;0pen Output file 


3600 


ADC no 




4578 


BIN2HEX 


LDY 80 


;buf indx=8 


5540 


; 




3610 


STA DTEMP+1 




4588 


LDX 


81 


;do 2 nuns 


5550 


OPENOUT LDX 8S20 


jclose 82 


3620 


STA FRB+1 




4590 


NXTBYT STX XI 


jsave it 


5560 


JSR CLOSE 




3630 


JSR NUMBR3 


;add nunber 


4608 


LDA 


8240 


jget HI bits 


5570 


LDX 8$28 




3640 


DEC NBVTE 


jMake 2 bytes 


4610 


AND 


FR0,X 




5580 


LDA 83 


jopen connand 


3650 


1 




4620 


L5R 


A 


Jdivide by 16 


5590 


STA ICCOM,X 




3660 


;lMplied Mode 




4638 


LSR 


A 




5600 


LDA 8 <DSTFILE ;point to 


3670 


; 




4640 


LSR 


A 




5610 


STA ICBAL,X 


;the dest'n 


3680 


IMP RTS 


jdo nothing 


4650 


LSR 


A 




5620 


LDA 8 >DSTFILE jfilenane. 


3690 


• 




4660 


TAX 




;to index 


5638 


STA ICBAH.X 




3700 


j Indirect instructions 


4670 


LDA 


HXTAB,X 


;get char 


5646 


LDA 88 


jwrite only 


3710 


/ 




4680 


STA 


LBUFF, Y 


;and save 


5650 


STA AUX1,X 




3720 


INDI JSR LOBVTE 


jcopy in LSB 


4698 


INY 




;up buf index 


5660 


LDA 80 


;no lines. 


3730 


JSR HIBYTE 


;and MSB 


4708 


LDX 


XI 


;get X back 


5670 


STA LINES 




3740 


JSR OPENP 


;do open C 


4718 


LDA 


815 


;now LO bits 


5680 


STA AUX2,X 




3750 


LDA 8") 


; and add 


4728 


AND 


FRO,X 




5690 


LDA 8 <BIGBUF ;point to the 


3760 


STA IBUF+1,> 


jclosing one 


4738 


TAX 






5700 


STA BUFPNT 


;start of the 


3770 


RTS 


j leave . 


4748 


LDA 


HXTAB,X 


;get char and 


5710 


LDA 8 >BIGBUF Jbuffer. 


3780 


I 




4758 


STA 


LBUFF, Y 


;put in buffer 


5720 


STA BUFPNT+1 




3790 


;Zero page ,Y 




4768 


INY 




;up buf indx 


5730 


LDA DSTFILE 


; is destn to 


3800 


i 




4770 


LDX 


XI 


;get X 


5740 


CMP 8'E 


;the screen? 


3810 


ZPAGY JSR LOBYTE ; do LSB 


4780 


DEX 




,'down by one 


5750 


BNE C.CIO 


;no, call cio 


3820 


JSR NUMBR 


; add arg 


4790 


BPL 


NXTBYT 


; done? 


5760 


LDY 81 


;show good. 


3830 


JMP ACY 


;copy ,Y 


4800 


RTS 




;yes. bye. 


5770 


RTS 




3840 


I 




4810 


t 






5780 


C.CIO JMP CIOU 


,'open it! 


3850 


jlnsert LSB 




4820 


;Fill buffer with blanks 


5790 


I 




3860 


; 




4830 


; 






5800 


;Close IOCB 




3878 


LOBYTE JSR ZFR 


jzero FRO 


4840 


ZBUF LDA 832 


;space 


5810 


J 




3880 


LDA DTEMP 


;do lobyte 


4850 


LDX 


839 


;do 40 spaces 


5820 


CLOSE LDA 812 


jclose connand 


3898 


5TA FR8 




4860 


ZLOOP STA IBUF,X 


{in buf 


5830 


STA ICCOM.X 




3900 


LDX 831 


;at pos. 18 


4870 


DEX 




;down count 


5840 


JMP CIOU 


;slan! 


3910 


JMP COPYNUM 


;do it! 


48S0 


BPL 


ZLOOP 


;go again 


5850 


i 




3920 


i 




4890 


RTS 




Jbye. 


5860 


;CIO get byte routine 


3930 


;Insert MSB 




4900 


i 






5870 


/ 




3940 


I 




4910 


jZero FRO 




5880 


CIOGET LDX 8$10 


;on ch 81 


3950 


HIBYTE JSR ZFR 


;no FRB 


4920 


i 






5890 


LDA 87 


;get bytes 


3960 


LDA DTEMP+1 


jhibyte 


4930 


ZFR LDA 


80 




5900 


STA ICCOM,X 




3970 


STA FR8 


;in FP 


4940 


STA 


FR8 




5910 


LDA 80 


;no length says 


3980 


LDX 834 


;at pos. 14 


4950 


STA 


FR8 + 1 




5920 


STA ICBLL,X 


;put byte in the 


3998 


JMP COPYNUM 


jcopy it. 


4960 


RTS 






5930 


STA ICBLH,X 


; accunulator . 


4000 


I 




4970 


1 






5940 


JMP CIDV 


;get it! 


4818 


;rtdd Open C 




4980 


jopen Input File 




5950 


i 




4828 


j 




4990 


; 






5960 


;Get byte routine 


4838 


OPENP LDA 8' ( 


jopen C 


5000 


OPENIN LDX 8$10 


;slan IOCB 81 


5970 


i 




4040 


STA IBUF+5 


j in buffer 


5010 


JSR 


CLOSE 




5980 


GETBYT LDA TYPE 


;get type. 


4050 


JMP NUMBR2 


;add nunber 


5020 


LDA 


TYPE 


;get disa type 


5990 


BEQ G-FILE 


; i f o, fron file 


4068 


i 




5030 


BEQ 


0_FILE 


;if 0, then file 


6000 


LDX GETPTR 


;get index 


4070 


;Copy nunber to 


string 


5040 


JSR 


UP, READ 


;read 1st sector 


6010 


CPX SECBYTES 


jat end? 


4080 


• 




5050 


PHP 




;save status 


6020 


BEQ NX. SEC 


1 yes . 


4090 


COPYNUM DEN 




5060 


LDA 


8$88 


jdefault size 


6030 


LDA DSBUF,X 


;get byte. 


4100 


STH CNTLO 


jsave x 


5070 


STA 


SECBYTES 




6040 


INC GETPTR 


;bunp pointer. 


4110 


LDA HXDC 


jhex/dec? 


5080 


LDA 


S.5IZE 


;get actual 


6050 


LDY 81 


jsignal good. 


4120 


BEQ INHEX 


;have Hex. 


5090 


CMP 


ttSea 


;is 128 bytes? 


6060 


RTS 


; bye . 


4130 


JSR IFP 


;to FP 


5100 


BEQ 


o.so 


;yes. 


6070 


1 




4140 


JSR FASC 


;to ASC 


5110 


LDA 


DSBUF+127 ;get data byte 


6080 


NX. SEC LDA 81 


; start on byte 1 


4150 


LDX CNTLO 


;get index 


5120 


STA 


SECBYTES 


; count . 


6090 


STA GETPTR 




4160 


LDY 8$FF 


;and copy 


5130 


0.S0 PLP 




;pull status 


6100 


LDA 5. SIZE 


jtrace links? 


4170 


CNLOOP INY 


;the nunber 


5140 


BMI 


INERR 


;oops, error. 


6110 


CMP 8125 




4180 


INX 




5150 


RTS 




;so long. 








4190 


LDA CINBUFFJ 


,Y 


5160 


0-FILE LDX 8S10 


J IOCB 81 




cont 


Inued on page 63 



JULY A.IM.A.L.O.C3. Computing 



43 



(25 



r=jD 



(29 



E) 



(H) S) 




C^Z 1 01 — i 



continued from page 9 

The trouble is that most character set edi- 
tors are great for editing sets but not for look- 
ing at them and comparing them. At most, 
you can usually only look at one or two sets 
at a time and by the time you load in the new 
set, you have forgotten just what the last one 
looked like. 

The Character Set Display Utility (CSDU) 
allows you to compare up to seven different 
character sets on the screen at one time. And 
it's easy to go back and reselect more fonts. 
By using this utility, you will be able to clean 
up your font disks quickly— and easily select 
which font suits your needs for a particular 
program. 



Typing It In 



CSDU is written in Action! . To use the pro- 
gram, carefully type in Listing 1 using the 
MIL Editor, found elsewhere in this issue. 

Listings 2 and 3 are the Action! source 
code for CSDU. If you have Action!, you may 
type these listings instead, using D.CHECK 



W ' ; ': ,' ',,: i :$$$&-; qimkfy- 
tffe 2 'ffi&MMfrttV. SOW' '& 

in Action! (ANALOG, December '88) to 
check your work. To create a copy of CSDU 
from the Action! listings, load Listing 3 into 
the Action! editor and compile it, making 
sure that Listing 2 (you should name it 
CSET2.ACT) is on the disk in your drive. 

Using the Program 

At the title screen, insert your font disk into 
the drive and press Start. The fonts must be 
the standard 1,024-byte, nine-sector redefined 
character set fonts, and the extender must be 
.FNT, as in D: FILENAME. FNT. 

Next, you will be presented with the font- 
selection screen. Here you may use either the 
joystick or the console keys to select fonts. 



The font-selection screen will display up to 
80 font names. Pressing Select or Option, or 
moving the joystick, changes the highlight- 
ed filename. Pressing Start or the joystick 
button will toggle a marker next to the font. 
You may select up to seven fonts. You will 
not be allowed to mark more than seven or 
mark an empty space. 

When you have marked from one to seven 
font names, pressing the space bar will take 
you to the font display screen. If you press 
Return or press the space bar without select- 
ing any font names, you will be prompted to 
insert a new font disk. 

When the font display screen is displayed, 
you will see seven multicolored windows. 
Each font selected will have a window con- 
taining the font name and the full set of al- 
phanumeric characters— that is, the upper and 
lower case letters and the number characters. 
Pressing the space bar will allow you to select 
more fonts to view. If you wish to view fonts 
on a new disk, insert the disk before press- 
ing the space bar. Pressing Start or the joy- 

^ B *?-~v —'V/''' >l ' ; V-'- '■"*'' ' UT ' ''' '* >'!'' r j-v'- r ' 

hty, you will , 




stick trigger will end the program. 

There are a couple cases where you might 
see something funny on the screen. If you at- 
tempt to load in a nonstandard Atari charac- 
ter set font (for instance, a Daisy Dot font 
file), the display window for that font will 
contain garbage. 

Using Action! as a Macro 
Assembler 

In a review of mine published in ANALOG 
#66, the biographical blurb at the end of the 
article mentioned my hunt for gainful em- 
ployment. Since that time, I am happy to 
report, I've found employment as a C 



JULY A.IM.A.L.O.Q. Computing 



programmer. Programming in C on a daily 
basis has had two effects on me. The first of 
these was a renewed respect and enthusiasm 
for the Action! programming language on the 
Atari. 

Second, now as a "professional" (yeah, 
right) programmer, I decided to learn every- 
thing there was to know about programming 
my Atari. I dug out every Boot Camp arti- 
cle, starting from the first one in ANALOG 
#13. Soon I had worked my way up to Karl 
Wieger's excellent series of articles on mac- 
ro assemblers and was ready to put my 
MAC/65 cartridge to work. 

By that time, however, my work with C led 
me to realize one great advantage of the Ac- 
tion! language. Like C, Action! is both a high- 
level language and a low-level language at the 
same time. 

It is a high-level language when I want to 
take advantage of built-in Print or Locate rou- 
tines or use flexible IF-THEN-ELSE, DO- 
WHILE, REPEAT-UNTIL constructs. It is 
a low-level language when I want to directly 



used for addresses. The nice thing about this 
is that Action! automatically takes care of 
storing and reading these numbers in low- 
byte, high-byte format for us. No bothering 
with LDA #START&255, LDA #START/256, 
etc. 

The global arrays are used as storage areas 
for filenames, the custom display list, the 
character set pointers, and the screen color 
pointers. While Action! allows you to store 
variables wherever you like, you have to take 
some steps to make sure your variable area 
doesn't overwrite a variable area used by the 
language itself. By setting up a 512-byte ar- 
ray called DLSPACE, we can put our display 
list, DL, in there and be assured it does not 
cross a page boundary. 

Similarly, we have to step back MEMTOP 
far enough to hold the seven character sets 
and the screen memory. 

On the other hand, all the routines that read 
the joystick and the keyboard, select the files, 
read the filenames off the screen, and invert 
the selected filenames are not any that I would 




manipulate hardware addresses, set or flip in- 
dividual bytes, or set up custom screens or 
interrupts. This gives a programmer a lot of 
power to do fancy things very easily without 
wading through tons of assembly code. 

For instance, the beginning of the Action! 
listing looks a lot like the equates at the be- 
ginning of an assembly program. Most of this 
I lifted right out of the Boot Camp series. The 
DEFINEs are used for the actual seven bytes 
of machine language used. About the only 
thing Action! can't do is manipulate the Atari 
status registers like the X, Y registers and the 
accumulator. 

The global BYTE variables are used for 
one-byte memory locations and hardware 
registers. The global CARD variables are 



want to implement in assembly language, 
macros or not. Action! is more than fast 
enough to handle any of these routines. In 
fact, I had to slow things down for the font 
selection screen to keep pace with human 
reflexes. 

If you want the power of machine language 
without having to reinvent the wheel, give 
Action! a try. 



A programmer for Bell Communications 
Research, Dave still finds enough time to use 
his 8-bit Atari. He enjoys programming in Ac- 
tion! and MAC/65, and is interested in com- 
puter simulations of all types. 



JULY A.IM.A.L.O.B. Computing 



LISTING 1: M/L EDITOR DATA 




1000 DATA 255,255,254,52,49,72,93,226, 

84,158,0,167,4,0,226,84,5097 

1010 DATA 161,8,167,4,21,80,0,0,56,0,8 

0,114,105,110,116,73,838 

102O DATA 69,61,42,40,73,78,84,32,105, 

41,226,84,133,0,167,4,2321 

103O DATA 25,91,36,50,48,32,95,83,72,7 

8,84,82,32,36,52,67,9334 

1040 DATA 32,80,114,105,110,116,73,68, 

69,93,226,84,101,0,0,0,653 

1050 DATA 20,0,84,94,0,69,79,76,32,36, 

52,67,32,95,68,79,9327 

1060 DATA 80,82,50,72,0,2,90,53,7,0,53 

,0,226,124,76,140,1508 

1070 DATA 108,44,92,156,101,53,112,112 

,112,66,0,0,2,130,14,2,8425 

1080 DATA 2,130,14,2,2,130,14,2,2,130, 

14,2,2,130,14,2,5880 

1890 DATA 2,130,14,2,2,130,14,2,14,2,6 

5,0,0,110,53,133,7630 

1100 DATA 160,134,161,132,162,24,104,1 

33, 132, 105, 3, 168, 104, 133, 133, 105, 6461 

1110 DATA 0,72,152,72,160,1,177,132,13 

3,130,200,177,132,133,131,200,663 

1120 DATA 177,132,168,185,160,0,145,13 

0,136,16,248,96,133,192,134,193,439 

1130 DATA 56,169,0,229,192,72,169,0,22 

9,193,170,104,96,134,194,224,1742 

1140 DATA 0,16,3,32,196,53,133,130,134 

, 131, 165, 133, 69, 194 , 133, 194, 9217 

1150 DATA 166,133,16,9,165,132,32,196, 

53,133,132,134,133,96,165,134,7634 

1160 DftTA 166,135,164,194,16,3,76,196, 

53,96,32,213,53,169,0,133,4590 

1170 DATA 134,133,135,165,130,208,4,16 

5,131,248,34,165,132,208,4,165,9142 

1180 DATA 133,240,26,70,133,102,132,14 

4,13,24,165,134,101,130,133,134,6556 

1190 DATA 165,135,101,131,133,135,6,13 

0,38,131,56,176,214,76,246,53,7773 

1200 DftTA 164,132,240,10,134,134,70,13 

4,106,136,208,250,166,134,96,164,1124 

1210 DATA 132,240,10,134,134,10,38,134 

,136,208,258,166,134,96,169,112,9915 

1220 DATA 170,169,12,157,66,3,32,86,22 

8,138,56,233,16,208,241,108,8959 

1230 DATA 10,0,86,54,0,32,86,228,16,26 

,192,136,240,6,104,104,4908 

1240 DATA 152,108,106,54,72,138,72,74, 

74,74,74,170,169,1,157,192,6324 

1250 DATA 5,104,170,104,96,201,8,144,7 

,104,104,169,134,108,106,54,5266 

1260 DftTA 10,10,10,10,170,96,24,105,1, 

157,68,3,152,105,0,157,2115 

1270 DATA 69,3,96,72,138,168,104,170,1 

73,108,54,96,72,169,0,133,5520 

1280 DATA 165,104,96,72,169,1,133,165, 

104,96,134,163,132,164,32,141,7405 

1290 DATA 54,169,8,157,73,3,168,177,16 

3,240,26,157,72,3,24,165,5300 

1300 DATA 163,105,1,157,68,3,165,164,1 

05,0,157,69,3,169,11,157,3711 

1310 DATA 66,3,32,109,54,165,165,240,1 

8,169,0,157,72,3,157,73,4486 

1320 DATA 3,169,11,157,66,3,169,155,32 

,109,54,96,32,180,54,76,3179 

1330 DATA 194,54,32,171,54,76,4,55,32, 

187,54,76,194,54,32,171,3764 

1340 DATA 54,76,16,55,134,160,32,141,5 

4,169,0,157,72,3,157,73,3357 

1350 DATA 3,169,11,157,66,3,165,160,32 



,109,54,96,170,173,108,54,5375 

1360 DATA 76,28,55,169,155,76,52,55,13 

4,164,132,165,32,141,54,24,4230 

1370 DATA 165,164,105,1,157,68,3,165,1 

65,105,0,157,69,3,165,163,5157 

1380 DATA 240,24,157,72,3,169,0,157,73 

,3,169,5,157,66,3,32,840 

1390 DATA 109,54,189,72,3,240,3,56,233 

,1,160,0,145,164,165,166,7565 

1400 DATA 240,7,165,164,166,165,76,64, 

55,96,72,169,0,133,166,104,5960 

1410 DATA 76,64,55,32,141,54,169,0,157 

,72,3,157,73,3,169,7,1807 

1420 DATA 157,66,3,32,109,54,133,160,9 

6,134,161,32,141,54,165,161,6925 

1430 DATA 32,158,54,165,163,157,74,3,1 

65,164,157,75,3,169,3,157,5613 

1440 DATA 66,3,32,109,54,138,74,74,74, 

74,170,169,0,157,192,5,4714 

1450 DATA 96,32,141,54,169,12,157,66,3 

,32,109,54,96,72,162,96,3209 

1460 DATA 169,12,157,66,3,32,86,228,18 

4,157,75,3,73,16,9,12,9888 

1470 DATA 157,74,3,169,83,133,160,169, 

58,133,161,169,160,157,68,3,7142 

1480 DATA 169,0,157,69,3,169,3,157,66, 

3,32,109,54,96,133,85,2387 

1490 DATA 134,86,132,84,96,32,6,56,169 

,6,174,253,2,76,28,55,2611 

15O0 DATA 32,6,56,169,6,76,139,55,133, 

160,134,161,132,162,160,0,6874 

1510 DATA 165,162,208,4,165,163,248,22 

,165,164,145,160,200,208,2,230,2160 

1520 DATA 161,198,162,165,162,201,255, 

208,231,198,163,56,176,226,96,72,3256 

1530 DATA 169,0,133,164,104,76,32,56,1 

33,160,134,161,132,162,160,0,6989 

1540 DATA 165,164,208,4,165,165,240,24 

,177,162,145,160,200,208,4,230,2340 

1550 DftTA 161,230,163,198,164,165,164, 

201,255,208,229,198,165,56,176,224,644 

1 

1568 DATA 96,76,124,56,72,169,224,141, 

9,212,104,64,96,50,70,76,4801 

1570 DftTA 138,56,169,192,141,14,212,17 

3,49,2,141,134,56,173,48,2,4274 

1580 DATA 141,133,56,24,173,133,56,105 

,14,133,174,173,134,56,105,0,4693 

1590 DATA 133,175,24,160,0,177,174,105 

,128,145,174,140,47,2,173,123,7303 

1600 DATA 56,141,1,2,173,122,56,141,0, 

2,169,34,141,47,2,96,1410 

1610 DATA 76,203,56,169,2,32,213,55,32 

,135,56,160,0,140,198,2,4205 

1620 DATA 200,140,240,2,136,132,82,56, 

173,229,2,233,0,133,174,173,9227 

1630 DATA 230,2,233,4,133,175,165,174, 

41,0,141,10,53,165,175,41,5161 

1640 DATA 252,141,11,53,169,8,133,132, 

173,11,53,170,173,10,53,32,3285 

1650 DATA 56,54,141,244,2,173,11,53,14 

1,230,2,173,10,53,141,229,7080 

1660 DATA 2,169,226,133,163,169,2,133, 

165,169,0,133,164,160,0,174,8044 

1670 DftTA 11,53,173,10,53,32,80,56,169 

,224,133,163,169,0,133,165,7823 

1680 DATA 169,8,133,164,160,0,174,11,5 

3,173,10,53,32,80,56,24,739 

1690 DATA 173,10,53,105,8,133,160,173, 

11,53,185,0,133,161,169,225,7706 

1700 DATA 133,163,169,0,133,165,169,8, 



JULY A.N.A.L.O.G. Computing 



133,164,168,24,166,161,165,160,9900 

1710 DATA 32,80,56,24,173,10,53,105,40 

,133,160,173,11,53,105,0,2288 

1720 DATA 133,161,169,225,133,163,169, 

0,133,165,169,8,133,164,160,32,8147 

1730 DATA 166,161,165,160,32,80,56,24, 

173,10,53,105,24,133,160,173,5419 

1740 DATA 11,53,105,0,133,161,169,225, 

133,163,169,0,133,165,169,8,8174 

1750 DATA 133,164,160,152,166,161,165, 

160,32,80,56,24,173,10,53,105,4386 

1760 DATA 32,133,160,173,11,53,105,0,1 

33,161,169,225,133,163,169,0,8250 

1770 DATA 133,165,169,8,133,164,160,16 

8,166,161,165,160,32,80,56,169,8804 

1780 DATA 3,133,84,169,5,133,85,76,236 

,57,9,33,72,65,82,65,2308 

1790 DATA 67,84,69,82,160,57,162,226,1 

69,6,32,16,55,76,2,58,1506 

1880 DATA 9,32,32,32,32,32,32,35,69,84 

,160,57,162,248,169,6,5067 

1810 DATA 32,16,55,76,29,58,14,32,32,3 

2,32,32,32,32,37,73,7121 

1820 DATA 83,80,76,65,89,160,58,162,14 

,169,6,32,16,55,76,57,954 

1830 DATA 58,15,32,32,32,32,32,32,32,3 

2,36,84,73,76,73,84,9438 

1840 DATA 89,160,58,162,41,169,6,32,16 

,55,160,0,140,144,2,140,3148 

1850 DATA 146,2,140,145,2,76,109,58,28 

,32,32,32,32,32,32,32,7857 

I860 DATA 32,32,32,32,98,121,32,68,97, 

118,101,32,65,114,108,185,3453 

1870 DATA 110,103,116,111,110,162,58,1 

69,80,32,22,55,76,154,58,34,2758 

1880 DATA 32,32,32,32,32,40,99,41,32,4 

9,57,56,57,32,102,111,193 

1890 DATA 114,32,65,78,65,76,79,71,32, 

67, 111, 109, 112, 117, 116, 105, 4478 

1900 DATA 110,103,162,58,169,119,32,22 

,55,76,165,58,0,162,58,169,4581 

1910 DATA 164,32,22,55,76,213,58,37,32 

,32,73,110,115,101,114,116,3990 

1920 DATA 32,68,105,115,107,32,119,105 

,116,104,32,70,111,110,116,115,5102 

1930 DATA 44,32,80,114,101,115,115,32, 

211,212,193,210,212,162,58,169,2250 

1940 DATA 175,32,10,55,173,31,208,73,6 

,240,8,173,132,2,240,3,5530 

1950 DATA 76,220,58,96,88,0,0,166,76,1 

84,76,245,58,32,151,53,5407 

I960 DATA 236,58,2,56,173,236,58,233,1 

, 133, 174, 169, 0, 133, 133, 169, 8935 

1970 DATA 8,133,132,165,174,162,0,32,2 

,54,141,239,58,173,239,58,8064 

1980 DATA 141,240,58,24,173,239,58,105 

,7,141,47,59,173,47,59,205,6186 

1990 DATA 240,58,176,4,76,94,59,0,172, 

238,58,162,0,173,237,58,7662 

2000 DATA 32,24,56,165,160,41,127,141, 

241,58,173,241,58,73,32,208,9099 

2010 DATA 3,76,85,59,173,241,58,174,24 

0,58,157,14,53,238,237,58,9984 

2020 DATA 238,240,58,76,36,59,96,86,38 

,76,38,76,102,59,142,96,3360 

2030 DATA 59,141,95,59,172,96,59,162,0 

,173,95,59,32,24,56,165,3752 

2040 DATA 160,141,97,59,173,97,59,73,3 

2,240,3,76,211,59,24,173,5783 

2050 DATA 95,59,105,1,133,160,169,0,13 

3,161,172,96,59,166,161,165,9387 



2060 DATA 168, 32, 24, 56, 165, 160, 141, 98, 

59,173,98,59,73,160,208,3,6548 

2070 DATA 76,208,59,238,254,52,169,7,2 

05,254,52,176,3,76,203,59,8673 

2080 DATA 169,20,141,253,2,172,96,59,1 

62,0,173,95,59,32,13,56,2717 

2090 DATA 76,208,59,169,7,141,254,52,7 

6,246,59,173,97,59,73,20,5881 

2100 DATA 240,3,76,246,59,56,173,254,5 

2,233,1,141,254,52,169,32,9010 

2110 DATA 141,253,2,172,96,59,162,0,17 

3,95,59,32,13,56,96,240,5192 

2120 DATA 59,20,76,253,59,169,32,141,2 

53,2,160,1,140,247,59,169,9056 

2130 DATA 20,205,247,59,176,3,76,121,6 

0,160,0,140,249,59,169,3,6401 

2140 DATA 205,249,59,176,3,76,115,60,1 

69,0,133,133,169,10,133,132,6504 

2150 DATA 173,249,59,162,0,32,2,54,141 

,248,59,169,0,133,133,169,7271 

2160 DATA 10,133,132,173,249,59,162,0, 

32,2,54,133,172,138,133,173,7686 

2170 DATA 24,169,8,101,172,141,91,60,1 

73,91,60,205,248,59,176,4,8124 

2180 DATA 76,109,60,36,172,247,59,162, 

0,173,248,59,32,13,56,238,7261 

2190 DATA 248,59,76,88,60,238,249,59,7 

6,22,60,238,247,59,76,7,6756 

2200 DATA 60,96,36,70,48,36,76,129,68, 

142,123,60,141,122,60,160,5894 

2210 DATA 0,140,125,60,200,140,124,60, 

173,122,60,141,173,60,173,123,9074 

2220 DATA 60,141,174,60,173,173,60,205 

,124,60,173,174,68,237,125,60,9927 

2230 DATA 176,5,76,186,60,53,36,238,12 

4,60,208,232,238,125,60,76,9910 

2240 DATA 156,60,96,65,65,36,65,53,76, 

195,60,142,188,60,141,187,7873 

2250 DATA 60, 172, 188, 60, 162, 0, 173, 187, 

60,32,24,56,165,160,141,191,8327 

2260 DATA 60,160,0,140,189,60,169,7,20 

5,189,60,176,3,76,107,61,5935 

2270 DATA 173,191,60,73,32,208,3,76,64 

,61,24,173,187,60,109,189,6790 

2280 DATA 60,133,160,169,0,133,161,172 

,188,60,166,161,165,160,32,24,8362 



1 



ATA 



iVE; MONEY ON; 
300/XL/XE SOFTWARE 



Atari Public Domain & Shareware 
Software 

Over 250 Theme Disks! Every disk 
is Guaranteed! 

Games! Graphics! Educational! 
Music! Utilities! Home & Business! 

Fast dependable world-wide service! 

Send for your FREE descriptive 
Catalog. 

BELLCOM 

P.O.Box 1043-G 

Peterborough, Ontario 

Canada K9J 7A5 



CIRCLE #108 ON RUDER SERVICE CARD. 



JULY A.N.A.L.O.O. Computing 




2298 DATA 56,165,168,141,199,68,173,19 

8,68,73,32,288,3,76,61,61,4873 

2388 DATA 24,173,187,68,189,189,68,133 

,85,173,198,68,73,128,133,168,9235 

2318 DATA 165,168,32,52,55,24,173,187, 

68,189,189,68,133,174,24,165,7819 

2328 DATA 174,185,1,133,85,76,181,61,2 

4,173,187,68,189,189,68,133,7129 

2338 DATA 85,173,191,68,73,128,133,168 

,165,168,32,52,55,24,173,187,7617 

2348 DATA 68,189,189,68,133,174,24,165 

,174,185,1,133,85,238,189,68,9877 

2358 DATA 76,222,68,96,36,56,53,36,65, 

58,36,67,54,76,128,61,1436 

2368 DATA 169,255,141,252,2,168,8,148, 

254,52,169,22,133,84,288,132,9586 

2378 DATA 85,169,8,133,163,169,8,133,1 

65,169,32,133,164,168,56,162,9145 

2388 DATA 53,169,14,32,32,56,76,182,61 

,28,211,288,193,195,197,32,9697 

2398 DATA 116,111,32,118,185,181,119,3 

2,182,111,118,116,115,32,162,61,5495 

2488 DATA 169,161,32,18,55,76,218,61,1 

7,47,32,218,197,212,213,218,1295 

2418 DATA 266,32,78,181,119,32,68,185, 

115,187,162,61,169,192,32,18,5565 

2428 DATA 55,168,8,148,112,61,288,148, 

111,61,136,148,114,61,288,148,9162 

2438 DATA 113,61,174,113,61,173,111,61 

,32,192,68,173,31,288,73,5,5681 

2448 DATA 248,14,173,128,2,41,2,133,17 

4,165,174,248,3,76,117,62,6981 

2458 DATA 162,9,169,196,32,126,68,173, 

111,61,141,188,61,173,113,61,6983 

2468 DATA 141,189,61,238,111,61,288,3, 

238,112,61,169,28,285,111,61,8887 

2478 DATA 169,8,237,112,61,48,3,76,99, 

62,168,6,148,112,61,288,5794 

2488 DATA 148,111,61,24,173,113,61,185 

,18,141,113,61,173,114,61,185,5846 

2498 DATA 8,141,114,61,169,31,285,113, 

61,169,8,237,114,61,48,3,4915 

2588 DATA 76,99,62,136,148,114,61,288, 

148,113,61,174,188,61,173,189,8661 

2518 DATA 61,32,192,68,174,111,61,173, 

113,61,32,192,68,173,31,288,8876 

2528 DATA 73,3,248,14,173,128,2,41,1,1 

33,174,165,174,248,3,76,7418 

2538 DATA 1,63,162,9,169,196,32,126,68 

,173,111,61,141,188,61,173,7683 

2548 DATA 113,61,141,189,61,56,173,111 

,61,233,1,141,111,61,173,112,7648 

2558 DATA 61,233,8,141,112,61,173,111, 

61,281,1,173,112,61,233,8,7117 

2568 DATA 48,3,76,239,62,168,8,148,112 

,61,169,28,141,111,61,56,5183 

2578 DATA 173,113,61,233,18,141,113,61 

,173,114,61,233,8,141,114,61,7883 

2588 DATA 173,113,61,281,1,173,114,61, 

233,8,48,3,76,239,62,146,6468 

2596 DATA 114,61,169,31,141,113,61,174 

,188,61,173,189,61,32,192,68,6533 

2688 DATA 174,111,61,173,113,61,32,192 

,68,173,128,2,41,4,133,174,5544 

2618 DATA 165,174,248,3,76,94,63,162,9 

, 169, 196, 32, 126, 68, 173, 111, 7696 

2628 DATA 61,141,188,61,173,113,61,141 

,189,61,56,173,113,61,233,18,6898 

2636 DATA 141,113,61,173,114,61,233,8, 

141,114,61,173,113,61,281,1,6949 

2648 DATA 173,114,61,233,8,48,3,76,76, 

63,168,8,148,114,61,169,5182 



2658 DATA 31,141,113,61,174,188,61,173 

,189,61,32,192,68,174,111,61,6979 

2668 DATA 173,113,61,32,192,68,173,128 

,2,41,8,133,174,165,174,248,9995 

2678 DATA 3,76,186,63,162,9,169,196,32 

,126,68,173,111,61,141,188,7674 

2688 DATA 61,173,113,61,141,189,61,24, 

173,113,61,185,18,141,113,61,5841 

2698 DATA 173,114,61,185,8,141,114,61, 

169,31,285,113,61,169,8,237,8219 

2788 DATA 114,61,48,3,76,168,63,168,8, 

148,114,61,268,148,113,61,6818 

2718 DATA 174,188,61,173,189,61,32,192 

,68,174,111,61,173,113,61,32,6137 

2728 DATA 192,66,173,31,288,73,6,248,8 

,173,132,2,248,3,76,224,8279 

2738 DATA 63,162,39,169,16,32,126,68,5 

6,173,113,61,233,1,133,168,7351 

2748 DATA 174,111,61,165,168,32,99,59, 

173,252,2,73,12,246,18,173,7545 

2758 DATA 252,2,73,33,248,3,76,243,61, 

173,252,2,73,12,248,8,6971 

2766 DATA 173,254,52,248,3,76,88,64,32 

,258,59,169,22,133,84,166,7589 

2778 DATA 1,132,85,76,39,64,24,32,73,1 

18,115,161,114,116,32,68,3585 

2788 DATA 185,115,187,32,119,185,116,1 

64,32,78,111,118,116,115,44,162,6332 

2798 DATA 64,169,14,32,18,55,76,63,64, 

13,32,88,114,181,115,115,3257 

2888 DATA 32,211,212,193,218,212,32,16 

2,64,169,49,32,18,55,173,31,5684 

2818 DATA 288,73,6,248,3,76,78,64,169, 

255,141,252,2,76,218,64,9645 

2828 DATA 168,8,148,254,52,148,112,61, 

288,148,111,61,169,28,285,111,9269 

2838 DATA 61,169,8,237,112,61,16,3,76, 

218,64,168,8,148,114,61,5373 

2846 DATA 148,113,61,169,38,285,113,61 

,169,8,237,114,61,16,3,76,4498 

2858 DATA 287,64,172,111,61,174,114,61 

,173,113,61,32,24,56,165,168,6653 

2868 DATA 141,118,61,173,118,61,73,28, 

248,3,76,187,64,238,254,52,9759 

2878 DATA 24,173,113,61,185,1,133,161, 

172,111,61,166,161,173,254,52,1851 

2888 DATA 32,242,58,24,173,113,61,185, 

18,141,113,61,173,114,61,185,6391 

2898 DATA 8,141,114,61,76,123,64,238,1 

11,61,288,144,238,112,61,76,9646 

2988 DATA 188,64,96,98,53,28,8,8,167,4 

,29,91,36,56,57,36,9714 

2918 DATA 48,51,36,65,65,36,66,68,36,5 

5,56,76,246,64,169,8,4686 

2928 DATA 32,213,55,168,1,148,248,2,16 

9,82,141,198,2,169,12,141,7828 

2938 DATA 197,2,76,53,65,39,17,18,18,1 

8,18,18,18,18,18,23,6273 

2948 DATA 18,18,18,18,18,18,18,18,18,2 

3,18,18,18,18,18,18,5438 

2958 DATA 18,18,18,23,18,18,18,18,18,1 

8,18,18,5,162,65,169,386 

2968 DATA 13,32,22,55,168,1,132,84,169 

,28,197,84,176,3,76,186,5787 

2978 DATA 65,169,9,133,85,169,29,197,8 

5,176,3,76,181,65,169,124,7362 

2986 DATA 32,52,55,24,165,85,185,9,133 

,85,76,77,65,238,84,76,5867 

2998 DATA 64,65,169,21,133,84,168,8,13 

2,85,76,157,65,39,1,18,2516 

3888 DATA 18,18,18,18,18,18,18,24,18,1 

8,18,18,18,18,18,18,5496 



JULY A.IM.A.L.O.Q. Computing 



3010 DATA 18,24,18,18,18,18,18,18,18,1 

8,18,24,18,18,18,18,5542 

3820 DATA 18,18.18,18,4,162,65,169,117 

,32,22,55,76,297,65,39,3759 

3838 DATA 124,32,32,32,32,32,32,32,32, 

32,32,32,32,32,32,32,7474 

3048 DATA 32,32,32,32,32,32,32,32,32,3 

2,32,32,32,32,32,32,7392 

3050 DATA 32,32,32,32,32,32,124,162,65 

,169,167,32,22,55,76,1,2594 

3060 DATA 66,39,26,18,18,18,18,18,18,1 

8,18,18,18,18,18,18,5622 

3070 DATA 18,18,18,18,18,18,18,18,18,1 

8,18,18,18,18,18,18,5518 

3080 DATA 18,18,18,18,18,18,18,18,3,16 

2,65,169,217,32,10,55,2417 

3090 DATA 160, 0, 140, 242, 64, 169, 1, 32, 20 

1,55,76,29,66,7,68,58,2682 

3190 DATA 42,46,70,78,84,169,6,133,163 

,169,0,133,164,160,66,162,9003 

3110 DATA 21,169,1,32,161,55,168,1,148 

,240,64,148,241,64,173,240,2371 

3120 DATA 64,133,84,173,241,64,133,85, 

169,20,133,163,160,64,162,219,1644 

3130 DATA 169,1,32,130,55,169,64,205,2 

22,64,144,3,76,175,66,238,9788 

3140 DATA 242,64,169,3,141,239,64,169, 

10,205,239,64,176,3,76,124,8959 

3150 DATA 66,174,239,64,189,219,64,133 

,160,165,160,32,52,55,238,239,2382 

3160 DATA 64,76,95,66,238,248,64,169,2 

0,205,240,64,144,3,76,165,9687 

3170 DATA 66,169,1,140,240,64,24,173,2 

41,64,105,18,141,241,64,169,210 

3180 DATA 31,205,241,64,144,3,76,165,6 

6,136,140,241,64,173,240,64,1454 

3190 DATA 133,84,173,241,64,133,85,169 

,127,285,83,3,144,18,173,242,660 

3200 DATA 64,73,80,240,3,76,64,66,169, 

1,32,201,55,32,117,61,4246 

3210 DATA 173,252,2,73,33,248,3,76,8,6 

6,169,255,141,252,2,96,8997 

3220 DATA 57,68,36,52,76,223,66,32,151 

,53,216,66,3,169,1,32,4154 

3230 DATA 201,55,169,4,133,163,169,0,1 

33,164,172,217,66,174,216,66,1813 

3240 DATA 169,1,32,161,55,169,7,141,82 

,3,173,219,66,141,85,3,6871 

3250 DATA 173,218,66,141,84,3,169,4,14 

1,89,3,169,0,141,88,3,3836 

3260 DATA 162,16,169,0,32,86,228,169,1 

,32,281,55,96,36,56,53,4225 

3270 DATA 36,76,44,67,32,151,53,37,67, 

2,160,8,140,40,67,169,4063 

3280 DATA 0,133,163,160,20,162,53,169, 

70,32,71,56,169,0,133,133,6193 

3290 DATA 169,8,133,132,173,39,67,162, 

0,32,2,54,133,174,138,133,6619 

3300 DATA 175,166,174,189,14,53,73,32, 

208,3,76,58,68,169,68,141,6200 

3310 DATA 71,53,169,58,141,72,53,169,0 

,133,133,169,8,133,132,173,8621 

3320 DATA 39,67,162,8,32,2,54,133,174, 

138,133,175,24,165,174,109,9078 

3338 DATA 40,67,133,172,165,175,105,0, 

133, 173, 166, 172, 189, 14, 53, 73, 8634 

3348 DATA 32,208,3,76,227,67,173,40,67 

,201,8,144,3,76,227,67,7178 

3350 DATA 24,173,40,67,105,3,133,174,1 

69,0,133,133,169,8,133,132,7978 

3360 DATA 173,39,67,162,8,32,2,54,133, 

172, 138, 133, 173, 24, 165, 172, 8941 



3370 DATA 109,40,67,133,170,165,173,10 

5,0,133,171,166,170,189,14,53,9380 

3380 DATA 166,174,157,78,53,238,40,67, 

76,111,67,24,173,40,67,105,5467 

3390 DATA 6,141,70,53,24,173,40,67,105 

,3,133,174,169,46,166, 174,8715 

3400 DATA 157,70,53,24,173,40,67,105,4 

,133,174,169,70,166,174,157,30 

3410 DATA 70,53,24,173,40,67,105,5,133 

,174,169,78,166,174,157,70,9528 

3428 DATA 53,24,173,40,67,185,6,133,17 

4,169,84,166,174,157,78,53,8801 

3430 DATA 173,38,67,133,163,172,37,67, 

162,53,169,70,32,220,66,76,7443 

3440 DATA 81,68,169,224,133,163,169,8, 

133,165,169,8,133,164,168,0,9113 

3450 DATA 174,38,67,173,37,67,32,80,56 

,96,68,17,32,76,88,68,2348 

3460 DATA 160,0,140,82,68,169,5,285,82 

,68,176,3,76,189,68,56,6337 

3470 DATA 173,229,2,233,0,133,174,173, 

230,2,233,4,133,175,165,174,2578 

3480 DATA 41,0,141,83,68,165,175,41,25 

2,141,84,68,169,8,133,132,8993 

3490 DATA 173,84,68,178,173,83,68,32,5 

6,54,174,82,68,157,94,53,6892 

3500 DATA 173,84,68,141,238,2,173,83,6 

8,141,229,2,24,173,82,68,7263 

3518 DATA 105,1,133,162,164,162,174,84 

,68,173,83,68,32,41,67,238,8228 

3520 DATA 82,68,76,93,68,169,224,141,1 

00,53,56,173,229,2,233,0,9010 

3530 DATA 133,174,173,230,2,233,4,133, 

175,165,174,41,0,141,83,68,7888 

3540 DATA 165,175,41,252,141,84,68,169 

,8,133,132,173,84,68,170,173,515 

3550 DATA 83,68,32,56,54,141,244,2,173 

,84,68,141,230,2,173,83,8707 

3560 DATA 68,141,229,2,168,0,174,84,68 

,173,83,68,32,41,67,56,4257 

3570 DATA 173,229,2,233,0,133,174,173, 

230,2,233,5,133,175,165,174,2690 

3588 DATA 41,0,133,88,165,175,41,240,1 

33,89,169,5,133,163,168,0,8871 

3598 DATA 166,89,165,88,32,71,56,96,76 

,51,69,72,138,72,152,72,5578 

3600 DATA 238,2,53,173,2,53,73,7,240,3 

,76,74,69,160,0,140,4879 

3618 DATA 2,53,24,173,108,53,189,2,53, 

133, 174 , 173, 109, 53, 105, O, 5650 

3620 DATA 133,175,160,8,177,174,141,24 

,208,174,2,53,189,94,53,141,8785 

3630 DATA 9,212,104,168,104,170,184,64 

,96,76,116,69,169,192,141,14,8779 

3648 DATA 212,24,173,90,53,105,0,141,9 

0,53,173,91,53,105,1,141,5567 

3650 DATA 91,53,173,90,53,41,0,141,90, 

53,173,91,53,41,255,141,8044 

3660 DATA 91,53,173,150,53,133,163,169 

, 0, 133, 165, 169, 39 , 133, 164, 172, 1286 

3670 DATA 149,53,174,91,53,173,90,53,3 

2,88,56,24,173,98,53,105,5144 

3688 DATA 4,133,174,173,91,53,185,0,13 

3,175,165,88,41,255,168,0,8993 

3690 DATA 145,174,24,173,98,53,105,5,1 

33,174,173,91,53,105,0,133,6709 

3700 DATA 175,169,8,133,132,165,89,170 

,165,88,32,56,54,168,0,145,7053 

3710 DATA 174,24,173,90,53,105,37,133, 

174,173,91,53,105,0,133,175,8122 

3720 DATA 173,90,53,41,255,160,0,145,1 

74,24,173,90,53,105,38,133,7437 



JULY A.N.A.L.O.Q. Computing 



49 








LISTING 2 : ACTION! 



3730 DATA 174,173,91,53,185,8,133,175, 

169,8,133,132,173,91,53,178,9277 

3748 DATA 173,98,53,32,56,54,168,8,145 

,174,173,91,53,141,49,2,5574 

3758 DATA 173,98,53,141,48,2,173,58,69 

,141,1,2,173,49,69,141,4981 

3768 DATA 8,2,96,55,36,67,52,36,76,67, 

78,169,8,32,213,55,4181 

3778 DATA 169,255,141,252,2,168,8,148, 

47,2,32,85,68,168,1,148,5164 

3788 DATA 248,2,169,12,141,198,2,169,2 

,141,197,2,169,6,141,2,5885 

3798 DATA 53,32,113,69,169,34,141,47,2 

,165,89,141,63,78,165,88,6955 

3888 DATA 141,62,78,168,8,132,87,169,8 

,285,254,52,144,3,76,79,7454 

3818 DATA 71,148,59,78,56,173,254,52,2 

33,1,141,168,78,173,168,78,568 

3828 DATA 285,59,78,176,4,76,79,71,79, 

166, 8, 132, 84, 132, 85, 148, 7884 

3838 DATA 69,78,169,7,285,68,78,176,3, 

76,214,78,173,59,78,18,6114 

3848 DATA 18,18,133,174,24,165,174,189 

,68,78,133,172,166,172,189,14,557 

3858 DATA 53,133,168,165,168,32,52,55, 

238,68,78,76,178,78,32,59,6143 

3860 DATA 55,76,243,78,22,32,32,65,66, 

67,68,69,78,71,72,73,3114 

3870 DATA 74,75,76,77,78,79,80,81,82,8 

3,84,162,78,169,228,32,8226 

3888 DATA 18,55,76,14,71,16,85,86,87,8 

8,89,98,48,49,58,51,2616 

3898 DATA 52,53,54,55,56,57,162,78,169 

,253,32,22,55,76,53,71,5123 

3900 DATA 28,32,32,97,98,99,188,181,18 

2,103,104,105,106,107,108,189,7668 

3918 DATA 118,111,112,113,114,115,116, 

117,118,119,128,121,122,162,71,169,685 

3920 DATA 24,32,22,55,24,165,88,185,16 

8,133,88,165,89,185,8,133,7333 

3938 DATA 89,238,59,78,76,149,78,24,17 

3,62,78,185,96,133,88,173,8313 

3940 DATA 63,70,105,4,133,89,160,0,132 

,84,132,85,76,144,71,48,6002 

3950 DATA 32,83,80,65,67,69,66,65,82,3 

2,168,244,239,168,243,229,4781 

3968 DATA 236,229,227,244,160,237,239, 

242,229,160,230,239,238,244,243,168,39 

lb 

3970 DATA 244,239,160,246,233,229,247, 

160,162,71,169,103,32,22,55,24,8988 

3980 DATA 173,62,78,185,176,133,88,173 

,63,78,165,4,133,89,160,8,6430 

3990 DATA 132,84,132,85,76,216,71,40,1 

60,160,160,160,160,160,160,160,3519 

4000 DATA 166,32,83,84,65,82,84,32,175 

,212,242,233,231,231,229,242,9167 

4010 DATA 166,244,239,160,289,245,233, 

244,160,168,168,160,160,160,166,160,81 

13 

4620 DATA 162,71,169,175,32,10,55,173, 

31,208,73,6,240,15,173,132,8791 

4038 DATA 2,248,18,173,252,2,73,33,248 

,3,76,223,71,173,252,2,140 

4040 DATA 73,33,240,3,76,12,72,169,255 

,141,252,2,160,1,140,6,8818 

4656 DATA 53,76,17,72,166,8,140,6,53,9 

6,76,21,72,32,266,56,4227 

4668 DATA 166,0,146,6,53,32,243,64,32, 

64,70,173,6,53,240,3,5576 

4070 DATA 76,29,72,169,0,32,213,55,96, 

96,226,2,227,2,18,72,5954 



Character Set Display Utility 
by Dave Arlington 
COPYRIGHT 1989 BY ANAL6G COMPUTING 

IMPORTANT H8TE: AN '••" AT THE END 
OF A LINE MEANS THAT THE LINE MRAPS 
AR6UND TO THE NEXT LINE OF THE 
LISTING. THE TWO LINES SHOULD BE 
TYPED AS ONE, WITHOUT THE "•■■. 

CHECKSUM DATA 
[34 56 26 A8 52 CB 56 B8 
7E ED CA 6D 57 AB 80 12 
89 32 82 1 



Global variables and defines 



DEFINE RTI= ,, $48", 
PHfl="$48", 
PLAr-'SBS", 
TXA^'SSA", 
TAX="$AA", 
TYA="$98" f 

tay^'Sas", 

START^'-S", 

SELECT="5", 

CPTI0N= ,, 3 M 

BYTE dindex=$57, 

nnien =$D40E, 

Chbase=$D409, 

color2=$2C6, 

rowcrs=$54, 

crsinh=$2F0, 

colorl=$2C5, 

Stick0=$278, 

Ch =$2FC, 

txtrow=$298, 

wsync =$D40A, 

finish 

CARD savnsc=$58, 
Vdslst=$200, 
icbadr=$354, 
tXtC0l=$291, 



sdnctl 

consol 

chbas 

C0lpf2 

colcrs 

lMargn 

icsta 

strigO 

iCCOM 

selfil 
count, 



=$22F, 

=$DOIF, 

=$2F4, 

=$D018, 

=$55, 

=$52, 

=$353, 

=$284, 

=$352, 

es, 



Sdlstl=$238, 
MeMtop=$2E5, 
icblen=$358, 
RaHSet 



BYTE ARRAY fnanes(56), filenMC2D), 
dlspaceC5l2), csetC7J, 
C0lS=I$7C $4C $8C 

$6C $2C $5C $9C1, 
dl=C112 112 112 $42 O O 
130 $0E 2 2 130 $0E 
2 2 130 $0E 2 2 130 
$0E 2 2 130 $0E 2 2 
130 $0E 2 2 130 $0E 
2 $0E 2 $41 O 61 

INCLUDE ,, D!CSET2.ACT" 

PROC CI0=$E456CBYTE areg, xregl 



PROC LoadFontCBYTE ARRAY naMefile 
CARD addr) 



Closed! 
Openci,nanef iie,4,03 

iCC0M=7 



so 



JULY A.M.A.L.O.G. Computing 



icbadr=addr 
icblen=1824 

CI0C0,$1Q) 

Close CD 
RETURN 



PROC GetFontCCARD addr BYTE filentiM) 

BYTE letcnt 

letcnt=B 
Zero if i lenH,20) 
IF fnaMesCfilenuM*8)832 THEN 
filermdJz'D 
filenMC2)=' : 
while fnaMesCfileniiM*8+letcnt)»32 

AND letcnt<8 
DO 

f i lenHCletcnt+3) =fnawes 

Cfilenuh**8 + letcnt) 
letcnt— +1 
OD 

filenMC0)=Ietcnt+6 
filenHtletcnt+3) = ' . 
filenMCletcnt+4)= , F 
filenMfletcnt+BJz'N 
filenMCletcnt+6)='T 
LoadFontCfilenn, addr) 
ELSE 

MoveBlock(addr,$EB88,8) 
FI 
RETURN 



PROC AllOCMeMC) 

BYTE cnt 
CARD temp 

FOR cnt=0 TO 5 
DO 

tenp= C CHeMtop-$488) &$FC8G) 

csetCcntJ=tewp RSH 8 

neMtoprtenp 

GetFont CteHp,cnt+l) 
OD 

csetC6)=$E8 

tewp= C CMeMtop-$4881 &$FC88) 
Chbas=teMp RSH 8 
MeMtop=tewp 
GetFonttteMp,8) 

SaVMSC=tMeHt0p-S588)&$F888 

Zero Csavnsc , 1288) 
RETURN 

PROC Dli2C) 

EPHA TXA PHA TYA PHA1 

count==+l 

IF count=7 THEN 

count=8 
FI 

colpf2=colsCcount) 
chbase=cset(count) 
CPLA TAY PLA TAX PLA RTI) 
RETURN 



nnien=192 

dlspace==+256 
dlspace==&$FF88 
MoveBlock Cdl space, d 1,39) 
dlspaceC4)=savMsc&$FF 
dlspace(5)=savMsc RSH 8 
d 1 space (37) =dlspace&$FF 
dlspace(38)=dlspace RSH 8 
sdlstl=dlspace 
VdSlSt=Dli2 
RETURN 

PR8C ShOWFontsC) 

BYTE cntl, cnt2, cnt3 
CARD temp 

Graphicste) 

Ch=255 

SdMCtl=8 

AIlocMenC) 
crsinh=l 

color2=$8C 
colorl=2 
count=6 
DliSetup2C) 

SdMCtl=34 

tenp=savMsc 

dindex=8 

IF selfiles>8 THEN 

FOR cntl=8 TO selfiles-1 

DO 

rowcrs=8 

colcrs=B 

F8R cnt2=8 TO 7 

DO 

PutCfnanesCCcntl L5H 3)+cnt2)) 

OD 

PutEC) 

PrintC" ABCDEFGHIJKLMNOPQRST") 

PrintEt ,, UUWXYZ8123456789") 

PrintEC" abedefghi jklMnopqrstt 
uvwxyz") 

savHSC==+168 
OD 
FI 

savnsc=teMp+1120 
rowcrs=8 

colcrs=8 

PrintEC" SPACEBAR Wkt-Wl J I J A M 'M J -M m 

HagaBggaaa'o 

savnsc=teMp+1288 

rowcrs=8 

colcrs=8 

Printf'B iMHBi start HIBTEEKE" 

DO 

UNTIL COnsol=START OR StrigB=B 

OR ch=33 
OD 
IF Ch=33 THEN 

Ch=255 

f inish=l 
ELSE 

f inish=8 
FI 
RETURN 



PROC DliSetup2C) 



PROC MainC) 
TitleScreenC) 



JULY A.M.A.L.O.G. Computing 



fcoiEft^ M 



a 




f inish=8 
DO 

FileScreenC) 

ShowFontsQ 
UNTIL finish=0 
OD 

Graphics to) 
RETURN 



LISTING 3 : ACTION! 

IMPORTANT NOTE: AN ■■•■■ AT THE END 
OF A LINE MEANS THAT THE LINE WRAPS 
AROUND TO THE NEXT LINE OF THE 
LISTING. THE TWO LINES SHOULD BE 
TYPED AS ONE, WITHOUT THE ■■•". 

CHECKSUM DATA 

C4E 02 49 20 E4 FD 38 BB 

66 E9 7E 37 FC 93 EC 8D 

8F A6 32 BE FD DC IB E6 

B2 6D 1 

PROC dlilC) 



PrintEC" by Dave Arlingta 

on") 

PrintEC" CO 1989 for ANALOG Cc 
OMputing") 

PrintEC"") 

Pri nt C" Insert Disk with Fonts, Pt 
ress HEED"J 

DO 

UNTIL COnsol=START OR Strig8=8 

OD 
RETURN 



PROC StashFileCBYTE filenuM, col, row) 

BYTE index, cnt,tenp 

index=Cf ilenuM-i)*8 

FOR cnt=index TO index+7 

DO 

teHp=Loc ate Ccol, row) &$7F 

IF tenptt32 THEN 
fnanesCcnt)=tenp 

FI 

col==+l 
OD 
RETURN 



[PHA3 

chbase=$EB 
tPLA RTI1 
RETURN 



;go back to ROM set 



PROC DliSetupC) 

BYTE ARRAY tenp 

nnien=192 
tenp=sdlstl 
tenp C14) ==+128 ;text window 
sdnctl=8 
Vdslst=dlil 
SdMCtl=34 
RETURN 



; enable interrupts 
;switch sets at 



;call interrupt 



PROC TitleScreenC) 



jail this work to get 
; upper and lower case 
; in Graphics 2! ! 



GraphicsC2) 

DliSetupC) 

color2=8 

crsinh=l 

lmargn=8 

RanSet= CneMtop-$400) &SFCOO 

chbas=RanSet RSH 8 

MeMtop=RaMSet 

MoueBlockCRaMSet,$E208,512) 

MoveBlockCRaMSet,$E008,8) 

MoveBlOCk CRaMSet+8,$E100+24, 8) 

MoveBlOCk CRanSet+48, SE18B+32, 8) 

MoveBlOCk CRanSet+24,$E180+152, 8) 

MoveBlOCk CRaHSet+32,$E100+168, 8) 

rowcrs=3 

colcrs=5 

Pr i ntDE C6 , " ! HARACTER") 

PrintDEC6," ttET") 

PrintDEC6," XI5PLAY") 

PrintDEC6," STILITY") 

txtrow=8 

tXtCOl=8 



PROC MarkFileCBYTE COl, TOW) 

BYTE Mark, letter 

nark=LocateCcol,row) 
IF Mark=32 THEN 

letter=LocateCcol+l,row) 
IF letterttiee THEN 
selfiles==+i 
IF selfiles<=7 THEN 
color=28 
Plot Ccol, row) 
ELSE 

self iles=7 
FI 
FI 
ELSEIF Mark=28 THEN 
self iles==-l 
color=32 
Plot Ccol, row) 
FI 
RETURN 

PROC ClearScreenC) 

BYTE crow, ccol, cnt 

color=32 

FOR crow=l TO 28 

DO 

FOR cnt=8 TO 3 
DO 

FOR ccol=cnt*10 TO 8+cnt*l0 
DO 

PlotCccol,crow) 
OD 
OD 
OD 
RETURN 



PROC pauzCCARD tiM) 



JULY A.M.A.L.O.G. Computing 



CARD cnt 

FOR cnt=l TO tin DO OD 
RETURN 



PROC FlipFontCBYTE col,row) 

BYTE cnt, letter, let 

let=LocateCcol,row) 

FOR cnt=8 TO 7 

DO 

IF let»32 THEM 

letter=Locate(col+cnt,row) 
IF lettertt32 THEM 
colcrs=col+cnt 
Put(letter!$88) 
colcrs=col+cnt+l 
FI 
ELSE 

colcrs=col+cnt 
Put(let!$88) 
colcrs=col+cnt+i 
FI 
OD 
RETURN 



PROC SelectFilesO 

BYTE oldrow, oldcol, Mark 
INT row, col, delay 

Ch=255 

self iles=o 

rowcrs=22 

colcrs=i 

SetBlockCfnaMes,56,32) 

Print ("ET Jjgg to view fonts "J 

PrintC 1 / lil^<U:i:i New Disk 11 ) 

row=l 

col=l 

FlipFont (row, col) 

DO 

IF Consol=SELECT OR (Stick8&2) =8» 
THEM 

pauz (2588) 
oldrow=row 
oldcol=col 
row==+l 

IF row>28 THEN 
row=i 
col==+18 
IF COl>31 THEN 

COl=l 
FI 
FI 

FlipFont (oldcol, oldrow) 
FlipFont (col, row) 
FI 

IF consol=OPTION OR (stiCkB&l) =8* 
THEN 

pauz (25883 
oldrow=row 
oldcol=col 
row"-i 
IF row<l THEN 
row=28 
col==-18 
IF C01<1 THEN 



COl=31 



FI 



FI 



FlipFont (ol dc ol, oldrow) 

FlipFont (col, row! 
FI 
IF (Stick8&4)=8 THEN 

pauz (2588) 

oldrow=row 

OldCOl=COl 

C0l==-18 

IF CD1<1 THEN 
C0l=31 

FI 

FlipFont (oldcol, oldrow) 

FI ipFont (col , row) 
FI 
IF (Stick8&8)=8 THEN 

pauz (2588) 

oldrow=row 

oldcol=col 

col==+18 

IF C0l>31 THEN 

coin 

FI 

FlipFont (oldcol, oldrow) 
FlipFont (col, row) 
FI 

IF Consol=START OR Strig0=8 THEN 
pauz (18808) 
MarkFile(col-I,row) 
FI 
UNTIL Ch=12 OR Ch=33 
OD 

IF Ch=12 OR selfiles=8 THEN 
ClearScreenO 
rowcrs=22 
colcrs=l 

PrintC Insert Disk with Fonts,") 
PrintC 1 Press gEEfl "J 
DO 

UNTIL Consol=START 
OD 

Ch=255 
EL5E 

self iles=8 

FOR row=i TO 20 

DO 

FOR COl=B TO 38 STEP 18 
DO 

Mark=Locate(col,row) 
IF nark=28 THEM 
self iles==+l 

StashFi le Csel f iles,col+l,row) 
FI 
OD 
OD 
FI 
RETURN 



PROC FileScreenO 

BYTE ARRAY name (28) 

BYTE cnt, row, col, nunfiles 

Graphics CO) 

crsinh=l 

color2=$52 

colorl=12 

PrintEC'i i i 



continued on page 57 



JULY A.N.A.L.O.B. Computing 




TORUN .SYS 



I've been programming in BASIC now for over three years and 
have been frustrated by the fact that all I could do with an 
AUTORUN.SYS is use my SETUP.COM program on my Atari 
DOS 2.5 disk to make one of my BASIC programs load and 
run when my system was booted. I envied assembly language 
programmers with the power they had over the machine; so about 
six months ago I started to teach myself assembler with the help 
of my Assembler/Editor cartridge and a few good books. 




: ^^^^^^j^00^;i^ with tk§ W^SSM, 



JULY A.N.A.L.O.Q. Computing 




It was about the time that I was starting to 
understand the assembler that I received my 
November '88 issue of ANALOG. To my 
delight it contained an article and program 
by LeRoy Baxter titled "AUTORUN.SYS 
Secrets." I quickly studied it and typed it in. 
It is a powerful and flexible tool, allowing 
me to load, merge and run programs in any 
way I need, along with displaying messages, 
etc. I haven't even started to utilize it to its 
fullest. 

In my excitement I stopped and realized 
that if I were still programming strictly in 
BASIC, I wouldn't have an assembler and 
would have been unable to utilize this great 
tool. So for all of you who are strictly BA- 
SIC programmers, I have written AUTO- 
SYS.BAS, a BASIC version of Mr. Baxter's 
program. 

Type in Listing 1 (check your work with 
BASIC Editor II, elsewhere in this issue) and 
save a copy. You'll use it many times. Now 
run the program. It will ask you to enter your 
command line. You can now enter up to 119 
characters of BASIC code (three lines minus 
one character). Type it in as if you were go- 



ing to execute it in immediate mode (i.e. no 
line numbers). Make sure the code is legal 
BASIC code, as there is no syntax error 
checking. When you are finished, hit Return. 
The program will now ask for the disk on 
which to write the AUTORUN.SYS file. In- 
sert the disk and hit Start. If all goes well you 
will see the READY prompt, and your AU- 
TORUN.SYS file is ready for the next time 
you boot that disk. 

You can write messages on the screen, au- 
tomatically run a BASIC program, two-stage 
LOAD and ENTER and even create an AU- 
TORUN.SYS for a language other than BA- 
SIC. It is everything the assembly language 
program is, with the advantage that you don't 
need an assembler, and you can use all the 
special characters (such as the screen clear 
and bell) and the quote mark without having 
to specify them in their ATASCII values as 
in the original version. For more information 
on what the program can do and how it 
works, read LeRoy Baxter's 'AUTO- 
RUN.SYS Secrets" in Issue 66 of ANALOG. 

This is how the BASIC modification works. 
First it asks for your command line. After en- 



tering your BASIC code into A$ (Line 130) 
Lines 220-240 calculate the length and end- 
ing address of the machine-language file to 
be written. It then opens the AUTORUN.SYS 
file on the disk and writes the two-byte iden- 
tifier code and starting address (Line 270 and 
DATA statement 1000) and the ending address 
(Line 280) to the file. Next it writes Mr. Bax- 
ter's program byte for byte to the file (Line 
290 and DATA statements 1010-1060). Next 
your command line is written from A$ (Line 
300). Finally, a carriage-return character, re- 
quired by the program, and the starting ad- 
dress of the program, required for an 
autoboot file, are written to the file (Line 310 
and DATA statement 1070). The file is then 
closed, and you're ready for action. 



David Schoch is 41 years old, happily mar- 
ried and the proud father of an 18-year-old 
daughter. He has been having a love affair 
with his Atari computer for three years, and 
his wife has accepted this mistress and con- 
siders her a ' 'good friend. ' ' 



JULY A.N.A.L.O.Q. Computing 



LISTING 1: BASIC 




1/1 




EI 1 REM XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXM 

RH 2 REM * AUT0RUN.SY5 MAKER * 

EY 3 REM * by David SchOCh * 

TB 4 REM * * 

UR 5 REM * COPYRIGHT 1989 * 

LV 6 REM * BY ANALOG COMPUTING * 

EO 7 REM XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXM 

NN 8 REM 

ZN 100 DIM A$tll9) :COUNT=0 

OP 110 POKE 82,0!? CHRSC125J : POSITION 8,2 

LP 120 ? " AUT0RUN.SY5 Creator": 

? :? "*Input Your Connand Line -119 Ch 

ar Max.*"; :? 
ZE 130 INPUT ttl6,A$ 

MO 140 COUNT=LENlA$) :IF C0UNT=8 THEN 418 
10 150 POKE 82,2 

OU 160 ? CHR$C125) : POSITION 2,6 
KB 170 ? "Insert Disk on which you wish t 

o" 
NT 180 ? "write new AUTORUN.SYS into Driv 

e ttl." 

MO 190 ? :? "Press rtf:1:H when ready..."; 

RU 200 IF PEEKC53279><>6 THEN 200 

JK 218 ? :? :? "Creating. . .AUTORUN. SYS. . . 

II I 

OU 220 LENGHT=123+C0UNT+16384 

MT 230 MSBrlNKLENGHT/ZSei 

UI 248 L5B=LENGHT-CMSB*256) 

OF 250 TRAP 480:0PEN ttl, 8, 8, "D : AUTORUN . SY 

S" 
UW 260 RESTORE 1888 
UY 270 FOR 1=1 TO 4 : READ N : PUT ttl, N: NEXT 

I 
XP 280 PUT ttl,LSB:PUT ttl, MSB 
TA 290 FOR 1=1 TO 123 : READ N : PUT »1,N:NEX 

T I 
DU 300 FOR 1=1 TO COUNT : N=ASC CA$ (I, I) ) : PU 

T ttl,N:NEXT I 
MJ 310 FOR 1=1 TO 7: READ N:PUT ttl, N: NEXT 

I 
LD 320 CLOSE ttl 
DN 330 ? CHR$C125J : END 
VD 40O TRAP 400O0:? :? "ERR0R-";PEEKC195J 

SEND 
LU 410 ? :? "ERROR- NO COMMANDS ENTERED": 

END 
DL 1000 DATA 255,255,8,64 
UJ 1018 DATA 162,36,189,26,3,201,69,240,5 

,202,202,202,16,244,232,142,83,64,189, 

26,3 
MB 1020 DATA 133,203,169,65,157,26,3,232, 

189,26,3,133,204,169,64,157,26,3,168,8 

,148 
IY 1030 DATA 82,64,177,203,153,65,64,208, 

192,16,144,246,169,83,141,69,64,169,64 

,141,70 
MP 104O DATA 64,96,0,0,8,0,0,8,0,0,0,0,0, 

0,0,0, 0,0,0,0,0 
UI 1050 DATA 172,82,64,185,123,64,281,155 

,240,6,238,82,64,168,1,96,72,138,72,17 

4,83 
HM 1060 DATA 64,165,203,157,26,3,232,165, 

204,157,26,3,104,170,104,160,1,96 
HZ 1070 DATA 155,226,2,227,2,8,64 f=) 



JULY A.N.A.L.O.B. Computing 






continued from page 53 



T 



VJ 



FOR rowcrsn TO 28 
DO 

FOR COlcrs=9 TO 29 STEP 9 

DO 

Put (1241 

OD 
OD 

rowcrs=21 
colcrs=0 

PrintEC"| ' ' 

— i 1 "J 

PrintEC'l 



PrintC'"- 



I") 



DO 



nuHf ilesrfl 

Closed) 

OpenCi,"D:*.FNT",6,0) 

row=i col=l 

rowcrs=row colcrs=col 

DO 

InputMD CI, nawe, 20) 
IF na«eC3)>64 THEN 



nuMf iles==+l 
FOR cnt=3 TO 10 
DO 

Put Cnane Cent)) 
OD 

row==+l 
IF row>20 THEK 

row=l 

col==+io 

IF C0l>31 THEN 
COl = 

FI 
FI 

rowcrs=row 
colcrs=coi 

FI 
UNTIL icsta>$7F OR nuMfiles=80 
OD 

Close CI) 
SelectFilesC) 
UNTIL Ch=33 
OD 

ch=255 
RETURN FI 



continued from page 11 

LISTING 1: BASK 



CHAOS 



AE 10 REM XXXXXXXXXXXXXXXXXXXXXXXXXXXXX 

CHAOS * 

by Alfredo L. Acosta * 

* 
COPYRIGHT 1989 * 
BY ANALOG COMPUTING * 
AG 16 REM xxxxxxxxxxxxxxxxxxxxxxxxxxxxx 
BM 17 REM 
ME 20 GOSUB 1000 

QUE 



ZP 11 REM * 

CO 12 REM * 

FY 13 REM * 

IP 14 REM * 

YU 15 REM * 



EEHSCHia 



KB 29 REM 

SL 30 GRAPHICS 24JP0KE 709,14:POKE 710, O: 

COLOR 1 
LH 40 PLOT AX,AY:PLOT BX,BY;PL 0T CX,CY 
AC 49 REM ■J<iiaH:U*f;TJiH:f 
ER 50 X=INTCRNDC0)*31O)+l:Y=INTCRNDC0)*18 

5)+l:PL0T X,Y 
DP 59 REM ■:ft».'B;MliiraB 
SS 60 Z=INTCRNDC0)*3)+1 
ZB 70 IF Z=l THEN M=ABS CAX-X) : N=ABS CAY-Y) 

:D=AX:E=AY:GOTO 100 
FA 80 IF Z=2 THEN M=ABS CBX-X) : N = AB5 CBY-Y) 

:D=BX:E=BY:GOTO 100 
PI 90 M=ABSCCX-X) :N=ABSCCY-Y) :D=CX:E=CY 
KM 100 IF X>D THEN X=D+M/2:G0T0 120 
ZJ 110 IF X<D THEN X=D-M/2 
PX 120 IF Y>E THEN Y=E+N/2 : GOTO 140 
CK 130 IF Y<E THEN Y=E~N/2 
TA 140 PLOT X,Y 

5G 150 IF PEEKC53279) <>5 THEN 60 
KC 160 GOTO 2000 
QF 999 REM 



INITIALIZATION 



UM 1000 DIM A$C193):P0KE 712,148:P0KE 752 

,1:? CHRSC125) 
NL 1010 AX=160:AY=176:BX=64:BY=16:CX=256: 

CY = BY 
OK 1020 POSITION 13,2!? ■■*** CHAOS ***" : p 

05ITI0N 5,6 



CZ 103O ? "This progran will place three 

dots on the screen to fori* a triangle. 
■I ■ 

BA 1040 ? "It will then place a dot rand 

only on the screen. Fron there it will 
randoMly choose a direction "; 
WB 1050 ? "toward one of the three start 

ing dots and place a new spot 1/2 th 

e distance ■■; 
MX 1060 ? "towards it. Thislast step will 
be continually repeatedfron the last 

new spot. ■■; 
UU 1070 ? "Instead of total coverage o 

f the area within the triangle, surpri 

sing patterns ewe rge!" 
GZ 1080 ? :? "Press im**J to dump to pri 

nter." 

NQ 1090 ? :? "Press gJEEfl t0 begin." 

NK 1100 IF PEEKC53279)<>6 THEN 1100 

AE 1110 RETURN 

LK 1999 REM E3M3IM3IEEI 

DT 2000 RESTORE 3000:LPRINT CHRS C27) ; CHRS 

C64) 
RN 2010 FOR T=l TO 61:READ Q : POKE 1535+T, 

Q : NEXT T : DM=PEEK C88) +PEEK C89)*256 : DM=D 

M+40*191 
RQ 2020 LPRINT CHRS C27) ; "3"; CHRS C20) : FOR 

U=DM TO DM+39 
MU 203O AS=CHRSC0) : AS C192) =CHRS C0) : AS C2) = 

AS 
KN 2040 A=U5RC1536,V,ADRCA$)) : LPRINT CHR$ 

C27) J ,, K";CHR$C192) j CHRS CO) ; AS 
XF 2050 NEXT U:END 
CO 3000 DATA 104,104,141,21,6,104,141,20, 

6,104,141,27,6,184,141,26,6,160,193,17 

3,255,255,136,248,35,141,255,255,238 
QI 3010 DATA 26,6,240,21,173,20,6,56,233, 

40,141,20,6,144,4,24,76,19,6,206,21,6, 

76,19,6,238,27,6,76,33,6,96 fq 



JULY A.N.A.L.O.Q. Computing 




by Tom Hudson 



As promised last issue, we're going to 
cover more 6502 instructions this 
time, and begin exploring the world 
of simple mathematical operations. 
Before we start with the math oper- 
ations, let's look at an instruction that will 
help us during the testing of the programs we 
write in this column. 



BREAKing Away 

Remember the do-nothing program from 
last issue? When we executed it with the "G" 
(execute program) command with the assem- 
bler editor cartridge, it ran forever. This is 
hardly a good way to test programs. Imagine 
trying to stop the program at a specific in- 
struction with the Break key when hundreds 
of thousands of operations are being execut- 
ed each second. You can see that this would 
be nearly impossible. 

Luckily for us, the 6502 has a handy in- 
struction called BRK (or BREAK). This in- 
struction does the same thing as the Break 
key on the keyboard when an assembly pro- 
gram is executing. The nice part is that it will 
stop the program exactly where we want to 
to stop. 



The short program below has a BRK in- 
struction after the load accumulator (LDA) 
instruction. The accumulator will be loaded 
with $4F (79 decimal) and the computer will 
stop. Type the program into your computer 
and assemble it into memory with the ASM 
command. 



10 


*= 


$0600 


; START ADDRESS 


20 


LDA 


«$4F 


; LOAD ACCUMULATOR 


30 


BRK 




; AND STOP 


40 


.END 







After the program is assembled, go to the 
DEBUG mode with the BUG command. To 
execute the short program, type: 

G 600 

The program will execute in a fraction of 
a second and the computer will return with 
a display similar to this 

0602 A=4F K=00 Y=00 P-30 S-00 

Note that the accumulator (A) equals $4F. 
The X, Y, processor status and stack registers 
are also displayed, but have no significance 
to us at this time, since we didn't change 
them. 



Now you can see that the BRK instruction 
can be helpful in the debugging stage of a pro- 
gram. We will be using it to stop the com- 
puter when we want to check the results of 
certain operations. 



Using Index Registers 

Index registers were mentioned briefly last 
issue. As you may recall, there are two in- 
dex registers in the 6502, the X and Y 
registers. These two registers are built into 
the 6502 microprocessor chip. Each is made 
up of eight bits, allowing a range of values 
from 0-255. 

The first instructions we'll look at are the 
LDX (load X) and LDY (load Y) instructions. 
These instructions are similar to the LDA 
(load accumulator) instruction we examined 
last time. Their formats are: 



LDX #n 


(IMMEDIATE) 


LDX nn 


(ABSOLUTE) 


LDX n 


(ZERO PAGE) 


LDX nn,Y 


(INDEXED Y) 


LDX n,Y 


(ZERO PAGE INDEXED Y) 


LDY #n 


(IMMEDIATE) 


LDYnn 


(ABSOLUTE) 



JULY A.N.A.L.O.G. Computing 




LDY n (ZERO PAGE) 
LDYnn,X (INDEXED X) 
LDY n,X (ZERO PAGE INDEXED X) 

The LDX and LDY instructions place a 
specified value in the X or Y register, respec- 
tively. For example, the following instruction 
will load the X register with $3A (58 
decimal): 

LDX #3A 

The following instruction will load the Y 
register with the contents of Memory Loca- 
tion $3F00: 

LDY $3F00 

The following instruction will load the X 
register from the page zero-Location $4D, 
which is the attract mode counter: 

LDX $4D 

Like the LDA instruction, both the LDX 
and LDY instructions set the sign and zero 
flags depending on the number loaded into 
the register. 

Storing the contents of the X and Y 
registers is just as easy as loading them. The 
following addressing modes are available with 
the STX (store X) and STY (store Y) in- 
structions: 

STX nn (ABSOLUTE) 

STX n (ZERO PAGE) 

STX n,Y (ZERO PAGE INDEXED Y) 

STY nn (ABSOLUTE) 

STY n (ZERO PAGE) 

STY n,X (ZERO PAGE INDEXED X) 

Unfortunately for us, the designers of the 
6502 decided to limit indexed store X and Y 

JULY A.N.A.L.O.Q. Computing 



instructions to page zero, even though there 
is a non-zero-page load instruction. This is 
simply something assembly programmers 
must live with. 

Like the STA instruction, the STX and 
STY instructions do not affect any status 
flags. 

The STX and STY instructions are very 
easy to use. For example, to store the X 
register at location $4FFB, simply use the in- 
struction: 

STX $4FFB 

In addition to the LDX/LDY and STX/STY 
instructions, the 6502 provides four more in- 
structions which help the programmer with 
X/Y operations. These are the transfer in- 
structions. 

The transfer instructions allow quick move- 
ment of information from one register to 
another. They are TAX, TAY, TXA and TYA. 
Two other transfer instructions, TSX and 
TXS, are used in stack operations, and we'll 
look at them in a later article. 

The TAX and TAY instructions transfer the 
contents of the accumulator (A) to the X or 
Y register, respectively. The A register is un- 
changed. 

The code below illustrates how the TAX 
instruction works. Type this short program 
into your computer and assemble it into 
memory: 



10 


*z 


$0600 


START ADDRESS 


20 


LDA 


»S0F 


PUT SOF IM A 


30 


TAX 




PUT IN X, TOO 


40 


LDA 


8S6A 


PUT S6A IN A 


50 


TOY 




NOW PUT IN Y, 


60 


BRK 




AND STOP! 


78 


.END 







Line 20 loads the accumulator with $OF, 
(15 decimal). 



Line 30 transfers the contents of the ac- 
cumulator to the X register. At this point both 
the accumulator and the X register will con- 
tain $OF. 

Line 40 loads the accumulator with $6A 
(106 decimal). 

Line 50 transfers the contents of the ac- 
cumulator to the Y register. Now the accumu- 
lator and the Y register will contain $6A. The 
X register will be unchanged. 

Line 60 will BREAK the execution of the 
program. 

After the program is assembled into 
memory, go to DEBUG mode and execute it 
by typing: 

G 600 

After execution, the screen of your com- 
puter should look like this: 

0606 A=6A X=OF Y=6A P=30 S=80 

You can see that the X register contains 
$OF, and that the A and Y registers contain 
$6A. Try some different combinations and 
observe the results. 

The two other transfer instructions we are 
concerned with here are the TXA and TYA 
instructions. As you may have guessed, these 
instructions do the opposite of the TAX and 
TAY instructions. That is, TXA will trans- 
fer the contents of the X register to the ac- 
cumulator, and TYA will move the Y 
register's contents to the accumulator. 

Here's a small problem for you to solve us- 
ing the instructions we've covered so far. This 
is a simple data-manipulation operation us- 
ing the A, X and Y registers and as many lo- 
cations as necessary. 

Problem: Write a program which starts 
with A=$03, X=$07 and Y=$14. Then write 



the code necessary to change these registers 
so that when the program ends, the registers 
are A=$07, X=14 and Y=$03. 

The code necessary to perform this change 
is only four lines long, and there are many 
ways to do it. Next issue I'll show several pos- 
sible solutions. 

This issue, we've only shown how to make 
the X and Y registers contain the values we 
want. In order to make the X and Y registers 
do some real work, we'll need to cover the 
branch-on-condition instructions. These will 
be discussed next issue, along with X and Y 
register indexing techniques. 

ItAUADDsUp 

I'm sure that, by now, just about every per- 
son reading this column wants to start work- 
ing with something more interesting than 
loading and storing bytes, right? Well, let's 



take a break from all that admittedly dull stuff 
and get on with something fun— actual ad- 
dition. 

We'll start out with some simple addition, 
working with values from 0-255. This is 
known as single-byte integer arithmetic, and 
is the simplest kind of math on the 6502. 

Why only integers from 0-255? Remem- 
ber that all arithmetic operations must be 
processed through the accumulator, or A 
register. The accumulator is made up of only 
eight bits, and can't hold any number great- 
er than 255. The accumulator doesn't know 
what a decimal point is either, so we are 
limited to integers for the time being. 

Binary or BCD? 

The 6502 microprocessor has the option 
of performing arithmetic instructions in two 
different modes, binary and binary-coded 



'The most useful program for the Atari since Print Shop!*" 



FORMS GENERATOR 

for the Atari 800, 800XL, 65XE, 130XE 

Designed by Jeff Brenner, columnist for Computer Shopper 
magazine, of "Applying The Atari" fame, and author of book 
and magazine articles in COMPUTE!, ANALOG and others 
LOOK WHAT YOU CAN DO WITH FORMS 
GENERATOR: Purchase merchandise by mail? Next 
time, send a customized purchase order form! Does 
your home or business ever need statements, in- 
voices, proposals, job work orders, gift certificates, 
etc.? No problem! Use FORMS GENERATOR'S scrolling spreadsheet- 
style screen to design almost any form to suit your exact needs. What 
you see on-screen is what you get on paper! Use the text mode with any 
80-column printer, or the high-res graphics mode with the Epson, 
Gemini/Star, Okidata, Panasonic or Prowriter for remarkably realistic 
forms. BUT THAT'S JUST THE BEGINNING: Once you've designed a 
form, you can program FORMS GENERA TOR to make all calculations 
automatically! Imagine: after you enter quantities, descriptions and 
prices, FORMS GENERATOR moves about the form calculating ex- 
tended prices, subtotals, and even the sales tax! Like magic! (Sample 
invoices included). You can also use FORMS GENERA TOR for record 
keeping, since you can save filled forms to disk! 

NAMED A "BEST BUY" IN 8-BIT SOFTWARE BY ANTIC MAGAZINE, JANUARY 1988. 

Our "down to planet Earth" price: Only $23.95 (product #ATA611). 



FOR C.O.D. ORDERS CALL (516) 932-5330 



Send coupon to: 

Twenty-Fifth 
Century™ 



□ YES! Please rush me FORMS GENERATOR(product 
#ATA611) with complete documentation. 90-day Iree 
replacement warranty, full customer service support and 
20-page Atari software catalog. I am enclosing $23.95 

* S3. 50 shipping and handling. 

□ Check/Money Order enclosed DC.OD. (add$2.50) 
Name 



Softujore Division 
Dept. AT 2 

254 Fifth Rvenue 

Suite 301 

New Vorh NV 1 000 1 



City- 
State . 



.Zip_ 



DEALER INQUIRIES INVITED. 

New York State residents add 8% sales tax. 
'The Print Shop and Alan are registered trademarks of Broderhund Sottware and Alan 
Corp., respectively. — Prices and availability subject to change without notice. 

CIRCLE #116 ON RUDER SERVICE CARD. 



BO 



decimal (BCD). Let's look at how both these 
systems work. 

Binary arithmetic, as we have noted before, 
produces numbers from 0-255 in one byte. 
All eight bits are used for the number. These 
numbers can be considered either signed or 
unsigned by the programmer, but they are 
handled the same by the computer. Since all 
eight bits are used to represent the number, 
the value of a byte is simply the byte's decimal 
contents. 

BCD arithmetic, on the other hand, is a 
more human approach to computer math, and 
easier to use in input/output operations. 

In BCD math, the byte is split into two 
four-bit sections, or NYBBLES. Each nyb- 
ble contains one decimal number, from 0-9. 
With this system, each byte contains two 
decimal numbers, allowing easy Base-10 
number storage. Of course, the BCD num- 
bering system requires more storage than bi- 
nary, since the value of a byte can now only 
range from 0-99, rather than 0-255. The nice 
thing about BCD is that when looking at the 
hexadecimal representation of the byte, you 
see the decimal value of the byte. For exam- 
ple, $56 is 56 decimal. 

We'll cover BCD math later in this series, 
when we get into screen I/O. For now we'll 
stick with binary math. Even though it may 
seem more difficult, binary math is much 
more important at this early stage. 

Getting Into BINARY 

The 6502 can handle two different types 
of math, so how does it know which one you 
want to use? The answer lies in a single-bit 
flag in the processor status register, called the 
decimal-mode flag. 

The decimal-mode flag has two states. 
When set (1), the decimal mode is selected. 
When cleared (0), the binary mode is select- 
ed. This flag is extremely important! The fol- 
lowing example illustrates this fact. 

Let's say you want to add two binary num- 
bers, $23 and $18. A normal binary add 
would give a result of $3B. 

What if the decimal-mode flag was set by 
mistake? The add would give a result of $41, 
the sum of 23 and 18. If your program adds 
or subtracts numbers with the decimal mode 
incorrectly set, the results can be very con- 
fusing. Moral: always know the setting of the 
decimal-mode flag. 

For our purposes, until further notice, we 

JULY A.N.A.L.O.Q. Computing 



will always clear the decimal mode with the 
CLD (clear decimal mode) instruction. The 
format of this instruction is: 

CLD 

This is a simple instruction, but easy to for- 
get. If you have trouble remembering things 
(like myself), I suggest that you tape an ap- 
propriate message to your monitor, computer, 
forehead, etc. This will save an incredible 
amount of debugging time. 

Important: When writing assembly subrou- 
tines for BASIC programs, you must clear the 
decimal mode if you're doing any arithmetic 
in the subroutine. BASIC uses the floating- 
point arithmetic package built into the com- 
puter, which sets the decimal mode. The first 
time I wrote a BASIC assembly subroutine 
with math, it took me two days to find the 
problem. Once again, write a note. 

Now that I've warned you about the evils 
of decimal-mode ignorance, let's get on with 
some actual addition. 



Add 'Em Up! 



First we'll cover single-byte additions, the 
simplest kind. These types of additions are 
sufficient for general counters, changing 
color registers, or any operation in which the 
result will not exceed 255. 

The 6502 has only one add instruction, 
ADC add with carry. This instruction has the 
following formats: 



ADC #n (IMMEDIATE) 

ADC nn (ABSOLUTE) 

ADC n (ZERO PAGE) 

ADC (n),Y(PRE-INDEXED INDIRECT) 

ADC (n),Y (POST-INDEXED INDIRECT) 

ADC n,X (ZERO PAGE INDEXED X) 

ADC nn,X (INDEXED X) 

ADC nn,Y (INDEXED Y) 

The ADC instruction adds the number at 
the memory location specified in the oper- 
and to the accumulator and places the result 
in the accumulator. Depending on the result, 
the 6502 will alter the sign, overflow, zero 
and carry flags. 

Let's look at a simple single-byte addition 
operation, using the immediate format. We 
will add 23 and 14 decimal and place the 
result in a location called ANSWER. Here's 
the code needed to perform this operation. 

JULY A.N.A.L..O.Q. Computing 



IB LDA 823 ; PUT 23 IN A 

20 CLC ; CLEAR CARRY FOR ADD 

30 ADC H14 ; AND ADD 14 TO IT! 

40 STA ANSHER ; SAUE RESULT 



The first line places the number 23 in the 
accumulator. Simple enough, right? 

The second line introduces a new opera- 
tion code, CLC (clear carry). The CLC in- 
struction places a in the 6502 carry flag. 
This is an important instruction to remem- 
ber, and should always be present in single- 
byte addition operations. 

Why is the CLC instruction so important? 
The answer lies in the structure of the 6502 
ADC instruction. Remember, ADC means 
"add with carry." Whenever an addition is 
performed on the 6502, the result is set to 
ACCUMULATOR + OPERAND + 
CARRY. 

Here's an example of what can go wrong 
when the programmer is not sure of the con- 
tents of the carry flag. Let's say the carry hap- 
pens to be set to 1. Fred the careless pro- 
grammer wants to add 1+1 to verify that the 
answer is indeed 2, so he writes the follow- 
ing code: 

LDA 81 
ADC 81 
STA ANSHER 

When Fred runs the program, he is as- 
tounded to find that 1 plus 1 is 3! If Fred had 
only inserted a simple CLC instruction, his 
life would have been much happier, as well 
as more accurate. 

Suffice it to say that in any single byte ad- 
dition operation, you should always clear the 
carry flag before the ADC instruction. 

The third line adds 14 to the accumulator, 
giving a result of 37 ($25 hex), which is, of 
course, correct. 

You can use any of the eight addressing 
modes with the ADC instruction. All produce 
the same results, they just get their data with 
different methods. 



Flag-waving 



Earlier I mentioned the flags altered by the 
ADC instruction. These are the sign, over- 
flow, zero and carry flags. 

The sign flag indicates the sign of the 
result. The contents of the accumulator's 7th 
bit are placed in this flag. If the flag is af- 
ter an add, the result is considered positive. 
A 1 in this flag indicates a negative result. 
See Issue # 72's Boot Camp for an in-depth 



discussion of the sign flag. 

The overflow flag is set to the exclusive/or 
of Bits 6 and 7 of the result. The overflow 
flag is rarely used, but it's a good idea to 
know what happens to it during processing. 

The zero flag is set to 1 if the result of the 
add was 0, and is set to if the result was 
not 0. 

The carry flag is set to 1 if the result of 
the add is greater than 255. This flag is im- 
portant in multi-byte addition (for numbers 
greater than 255). We'll be examining multi- 
byte operations next issue. 

All these flags are important in the com- 
puter's decision-making process. Depending 
on the result of an operation, the program- 
mer can go to other parts of the program us- 
ing comparison and branch instructions 
(similar to IF/THEN statements in BASIC). 
We will also cover these operations next 
issue. 

Starting With Subtraction. 

Now that we've covered simple addition, 
let's do a little subtraction. Subtraction is just 
as easy as addition, with a couple of simple 
differences. Shown below are the formats of 
the 6502 subtraction instruction, SBC (sub- 
tract with borrow). You will notice that the 
SBC has the same formats as the ADC in- 
struction. 

SBC #n (IMMEDIATE) 

SBC nn (ABSOLUTE) 

SBC n (ZERO PAGE) 

SBC (n,X) (PRE-INDEXED INDIRECT) 

SBC (n),Y (POST-INDEXED INDIRECT) 

SBC n,X (ZERO PAGE INDEXED X) 

SBC nn,X (INDEXED X) 

SBC nn,Y (INDEXED Y) 

The SBC instruction subtracts the number 
at the memory location specified in the oper- 
and from the accumulator and places the 
result in the accumulator. Like the ADC in- 
struction, the sign, overflow, zero and carry 
flags will be altered. 

For the time being we'll work only with 
single-byte subtractions, since they're the eas- 
iest to understand. We will subtract 14 from 
23 decimal and place the answer in a loca- 
tion called ANSWER. Here's the code need- 
ed for this operation: 



10 LDA 823 

20 SEC 

30 SBC 814 

40 STA ANSHER 



PUT 23 IN A 
SET CARRY FOR SUB 
AND SUB 14 FROM IT! 
SAUE RESULT 

61 



The first line simply places the number 23 
in the accumulator. 

The second line introduces another new 
operation code, SEC (set carry). This instruc- 
tion sets the carry flag to 1. Like the CLC 
instruction in single-byte additions, the SEC 
instruction is a must for all single-byte sub- 
tractions. 

The SBC instruction is strange in that it 
subtracts the contents of the memory byte in- 
dicated in the operand and the complement 
of the carry flag from the accumulator, plac- 
ing the result back in the accumulator. Here's 
an example. Let's say the accumulator con- 
tains 4 decimal, and we're subtracting 3 
decimal from this. Assume the carry flag is 
clear (0). The computer will subtract 3 from 
4, then subtract 1 from this (the complement 
of the carry flag), giving a result of 0. 

By setting the carry to 1, we make sure that 
the subtraction of our two numbers is un- 
affected by the subtraction of the carry's com- 
plement, which in this case is 0. The carry 
flag is used as a borrow in subtraction and 
not necessary in single-byte operations. 

The third line performs the subtraction. 
The result will be 23-14-0 or 9. 

The last line of the program places the 
result in the location labeled ANSWER. The 
result will still be in the accumulator. 

Like the ADC instruction, the SBC in- 
struction works the same with all eight ad- 
dressing modes available with the instruction. 
The SBC instruction affects the 6502 status 
flags in the same way as ADC. 

Applying What We've Covered 

We've now progressed to the point where 
we can write simple math programs using ad- 
dition and subtraction. Let's write a program 
to solve the equation: 

4+5+34-(8-7)=? 

Unlike BASIC, we can't simply code this 
equation right into our computer. In assem- 
bly language, it's up to the programmer to 
figure out the procedure needed to obtain the 
result and code it. 

Let's look at the equation shown above. In 
any mathematical equation, the expressions 
in parentheses must be solved before proceed- 

62 



ing with the rest of the equation. If we sim- 
ply solve the equation from left to right, we 
will get an incorrect answer: 

4+5+34-8-7=28 

In order to solve the equation correctly, we 
must solve it as follows: 

(8-7) = 1 
4+5+34-(l) = 42 

Now that we know how to proceed, let's 
write a section of code to solve the equation: 



$0600 
88 

87 

HOLD 
84 



834 



10 *= 

20 CLD 

30 LDA 

40 SEC 

50 SBC 

60 5TA 

70 LDA 

80 CLC 

90 ADC 85 

0100 CLC 

0110 ADC 

0120 SEC 

0130 SBC 

0140 STA 

0150 BRK 

0155 J 

0160 HOLD 

0170 ANSWER *=*+l 

0180 .END 



HOLD 

ANSWER 



»I«1 



NO DECIMAL MODE! 

PUT 8 IN A 

SET CARRY, 

SUBTRACT 7 FROM 8 

AND SAUE RESULT 

NOW PUT 4 IN A 

CLEAR CARRY, 

ADD 4 AND 5 
CLEAR CARRY AGAIN 
ADD 34 TO LAST 8 
SET CARRY 

SUBTRACT EARLIER 8 
AND SAUE ANSWER! 
ALL DONE! 

TEMP. HOLD AREA 
FINAL RESULT 



Line 10 tells the assembler to place the pro- 
gram at Location $0600, a safe location in 
computer memory. 

Line 20 clears the decimal mode, to avoid 
any accidental BCD results. 

Line 30 places the number 8 in the ac- 
cumulator. 

Line 40 sets the carry flag to get ready for 
a single-byte subtract. 

Line 50 subtracts 7 from 8, leaving the 
result in the accumulator. 

Line 60 stores the result of the expression 
in parentheses at a memory location called 
HOLD. This is done because we will need 
this number in a moment. 

Line 70 places a 4 in the accumulator in 
order to start solving the first part of the 
equation. 

Line 80 clears the carry flag to get ready 
for a single-byte add. 

Line 90 adds 5 to the accumulator, leaving 
the result in the accumulator. 

Line 100 clears the carry again for the next 
addition. In this case, the CLC is not neces- 
sary since we know the previous add did not 



exceed 255, but it's a good idea to get into 
the CLC habit. 

Line 110 adds 34 to the accumulator, once 
again leaving the result in the accumulator. 

Line 120 sets the carry flag for the next sub- 
tract operation. 

Line 130 subtracts the result of the expres- 
sion in parentheses (stored in HOLD) from 
the accumulator and gets the final result. 

Line 140 places the final result in the 
memory location called ANSWER. 

Line 150 breaks the program execution. At 
this point the accumulator should equal 42 
decimal ($2A hex). 

Line 160 and 770 set up the one-byte storage 
areas, HOLD and ANSWER. The assembler 
directive *=*+l simply tells the assembler 
to reserve one byte for each label. 

Line 180 tells the assembler that the end 
of the source code has been reached. 

After this code is typed in and assembled 
into memory, execute the program from DE- 
BUG mode with the command: 

G600 

The program will execute very quickly and 
return with a screen similar to this: 

0618 A=2A X=0F Y=6A P=31 S=0B 

Note that the accumulator contains $2A (42 
decimal). This is the correct answer to our 
equation. 

This example shows how you can perform 
simple add/subtraction operations in assem- 
bly language. Of course, we're limited to one- 
byte integers, but we'll soon exceed these 
limitations. 

Until Next Time. . . 

Try your own problems until you're profi- 
cient with the 6502 add-and-subtract opera- 
tions. Try using the various addressing modes 
to see how they work. In order to learn as- 
sembly language (or any other language, for 
that matter), you'll have to roll up your 
sleeves and dig in. 

Next issue will cover a lot of material, in- 
cluding the assembly equivalent of the BAS- 
IC IF/THEN statement, index register usage 
and multi-byte addition and subtraction, fl 

JULY A.IM.A.L.O.Q. Computing 



























LJlSK 


7O0O 




JSR 


ALL 


7970 


LDA SFLAG ; test flag 








\| MASTER 


7010 
7020 




JSR 
BMI 


GET. TWO jgrab 2 More 
H-ERR ;oops. 


7980 
7990 


BNE SND.OU jno swap! 










PRINT INS— SRC JprOMpt it 








7030 




LDA 


HXL j nake this 8 


8000 


JSR GET-RET 








7040 




STA 


FRO ;into hex for 


8010 SND.OU LDY 81 ;signal good. 








7050 




SEC 


joutput also. 


8020 


RTS 










7060 




SBC 


ADDR ;Ue also calc 


8030 ; 






continued from base 43 


7070 




STA 


BYTCNT ;the length of 


8040 J 


Test srcdrv vs. dstdrv 








7080 




LDA 


HXH ;the segMent. 


8050 ; 






6120 




BNE F.SEC ;no. 


7090 




STA 


FR0 + 1 


8060 TEST-DRU LDA DESDRU : qet dest 


613G 




LDA DSBUF+125 ;get the link 


7100 




SBC 


ADDR+l 


8070 


CMP srcdrv ;is = source? 


6140 




AND 83 ;hi 


7110 




STA 


BYTCNT+1 


8080 


RTS 


jbye. 


6150 




STA SECH ;get the link 


7120 




INC 


BYTCNT ;add 1 to the 


8090 J 






6160 




LDA DSBUF+126 ;10 


7130 




BNE 


N.OU ;segMent len. 


8100 ; 


Output error handler 


6170 




STA SECL ;at EOF? 


7140 




INC 


BYTCNT+1 


8110 ; 






6180 




ORA SECH 


7150 


N.OU 


8120 0UT_ERR JSR F-ERR ; f orMat erp8 


6190 




BNE C.READ ;no. 


7160 




LDX 


816 ;pos 16 


8130 


PRINT 


OUTP jprint OUTPUT 


62O0 


5 


EOF LDY t»136 jsignal error. 


7170 




JSR 


ALL jcopy it 


8140 


LDX 8S20 ; close 82 


6210 




RTS 


7180 




JSR 


PUTCR ;line feed 


8150 


JSR CLOSE 


6220 


C 


READ JSR UP. READ ; grab sector 


7190 




PLA 


jpull return 


8160 


PRINT 


IBUF jprint err8 


6230 




PHP jsave status 


7200 




PLA 




8170 


PRINT 


ALL.DONE+10 


6240 




LDA dsbuf+127 ;get » data 


7210 




JSR 


PRINT.IT jprint it 


8180 


JSR GET-RET ;get return 


6250 




STA SECBYTES JbyteS. 


7220 




JMP 


DISAMEM ;go again. 


8190 


JMP INTRO jso long. 


6260 




LDA DSBUF jget data byte 


7238 


/ 






8208 J 






6270 




PLP ;pull status 


7240 


;Grab two file bytes 


8210 J 


Get a RETUR 


6280 




RTS jand leave. 


7250 


i 






8220 J 






6290 


I 




7260 


GET 


.TWO 


JSR CIOGET 


8230 GET-RET JSR GETKEY ;get key 


6300 


F 


SEC INC SECL jsec=sec+l 


7270 




BMI 


G2ERR 


8240 


CMP 8E0L J is it EOL? 


6310 




BNE FS.l 


7280 




STA 


HXL 


8250 


BNE GET_RET jno. 


6320 




INC SECH 


7290 




JSR 


CIOGET 


8260 


LDX 8$20 


6330 


F! 


.1 JSR UP. READ ;grab sector 


7300 




STA 


HXH 


8270 


RTS 




6340 




PHP jsave status 


7310 


G2ERR 


8280 ; 






6350 




LDA DSBUF jget data 


7320 


J 






8290 J 


iheck if 


HXL/HXH=$FF 


6360 




PLP jpull status 


7330 


;Pr 


int The output 


8300 j 






6370 




RTS ;and leave. 


7340 


f 






8318 CHKFF LDA 


HXL j get byte 1 


6380 


1 




7350 


PRINT.IT PRINT IBUF ; to E: 


8320 


CMP 8$FF Jis it $FF? 


6390 


IJI 


.READ LDA SECCNT ; any sectors 


7360 




LDY 


80 ; wait 5 jiffies 


8330 


BNE CHKLU jno. 


6400 




ORA SECCNT+1 J left? 


7370 




STY 


RTCLOK 


8340 


CMP HXH Jis 82=81? 


6410 




BEQ s.EOF ;no! Done. 


7380 


WT_ 


LP LDA RTCLOK 


8350 CHKLU RTS 




6420 




LDA SECCNT ; subtract 1 


7390 




CMP 


85 








6430 
6440 




SEC ; f roH the sector 
SBC mi ;count. 


7400 
7410 




BCC 
LDA 


WT-LP 

DSTFILE ;to E: only? 


LISTING 5: ASSEMBLY 


6450 




STA SECCNT 


7420 




CMP 


8'E 








6460 




LDA SECCNT+1 


7430 




BNE 


PR. LP jno. 


0100 


SAUE8DJDMPT4.M65 


6470 




SBC M0 

STA SECCNT+1 


7440 
7450 


PR. 


rts ;yes. 

LP LDA IBUF,Y ; Move iObUf to 


0110 
0120 






6480 


DiSk Ma l:+or * napt A 


6490 




JMP READIT J read sector. 


7460 




STA 


(BUFPNT), Y ;big buffer 


0130 




-» i... • r u. .. -» 


6500 


1 




7470 




CMP 


8EOL 


0140 


These are the MneMonics for 


6510 


G_ 


.FILE LDA BYTCNT ; any bytes 


7480 




BEQ 


PR.DN 


0150 


the disasseMhl pr . Thpu app 


6520 




ORA BYTCNT+1 J left? 


7490 




INY 




0160 


arranged 


here in alphabetical 


6530 




BEQ HEADERS ;no, get nore 


7500 




BNE 


PR. LP 


0170 


order . 




6540 




LDA BYTCNT jsubtract 1 
SEC j f roM the count 


7510 
7520 


PR. 


DN INY ;now we add Y+l 
TYA ;to the pointer 


0180 
0190 






6550 






6560 




SBC ttl 


7530 




CLC 


jso we are ready 


0200 MNE .BYTE 


"ADCANDASLBCCBCS" 


6570 




STA BYTCNT 


7540 




ADC 


BUFPNT ;next tiMe 


0210 


.BYTE 


"BEQBITBMIBNEBPL" 


6580 




LDA BYTCNT+1 


7550 




STA 


BUFPNT 


0220 


.BYTE 


"BRKBUCBUSCLCCLD" 


6590 




SBC MO 


7560 




LDA 


BUFPNT+1 


0230 


.BYTE 


"CLICLUCMPCPXCPY" 


6600 




STA BYTCNT+1 


7570 




ADC 


80 


0240 


.BYTE 


"DECDEXDEYEORINC" 


6610 




INC BYTES ;up byte count 


7580 




STA 


BUFPNT+1 


0250 


.BYTE 


"INXINYJMPJSRLDA" 


6620 




JMP CIOGET jget the byte 


7590 




INC 


LINES 


0260 


.BYTE 


"LDXLDYLSRNOPORA" 


6630 


/ 




7600 




LDA 


lines ;get line count 


027O 


.BYTE 


"PHAPHPPLAPLPROL" 


6640 


;5end retraining instr bytes 


7610 




CMP 


8200 ;200 lines? 


0280 


.BYTE 


"R0RRTIRT5SBCSEC" 


6650 


i 




7620 




BNE 


SND.LU jno. 


0290 


.BYTE 


"SEDSEI5TASTX5TY" 


6660 


ANY_LEFT LDA BYTES jany extra? 


7630 


J 






0300 


.BYTE 


"TAXTAYTSXTXATX5" 


6670 




BEQ N.LF jno. 


7640 


;Send the buffer out 


0310 


.BYTE 


"TYA" 


6680 




LDY M151 jbad opcode. 


7650 


; 






0320 J 






6690 




JSR HAUOP ; f ornat .BYTE 


7660 


SEND-OUT LDA LINES ;any lines? 


0330 J 


Opcodes 




6700 




JSR PRINT.IT jsend it out. 


7670 




BNE 


SND. IT ;yes. 


0340 ; 




6710 




LDA dtemp ; prepare next 


7680 


SND 


■LU RTS ;so long. 


0350 OPCODF 




6720 




STA OP 


7690 


SND 


.IT LDA 811 jput bytes 


0360 


.BYTE 


$69, $65, $75, $6D J ADC 


6730 




DEC BYTES jdown count 


7700 




LDX 


8S20 


0370 


.BYTE 


$7D,$79,$61,$71 


6740 




BNE ANY-LEFT ; and loop 


7710 




STA 


ICC0M,X 


0380 


.BYTE 


$29, $25, $35, $2D J AND 


6750 


N. 


LF RTS ;bye. 


7720 




LDA 


8 <BIGBUF J f tom bigbuf 


0390 


.BYTE 


$3D, $39, $21, $31 


6760 


Il_ 


ERR JMP INERR j input error 


7730 




STA 


ICBAL,X 


0400 


.BYTE 


$06,$06,$16,$0E JASL 


6770 


I 




7740 




LDA 


M >BIGBUF 


0410 


.BYTE 


$1E 


6780 


;puil file headers 


7750 




STA 


ICBAH,X 


0420 


.BYTE 


$90 JBCC 


6790 


i 




7760 




LDA 


BUFPNT ;calc the len 


0430 


.BYTE 


$BO JBCS 


6800 


HEADERS JSR ANY_LEFT jsend extra 


7770 




SEC 


jof the buffer 


0440 


.BYTE 


$FO J BEQ 


6810 




JSR GET. TWO jgrab 2 More 


7780 




SBC 


8 <BIGBUF 


0450 


.BYTE 


$24,$2C JBIT 


6820 




BMI H-ERR ;oops. 


7790 




STA 


ICBLL,X 


0460 


.BYTE 


$30 J BMI 


6830 




LDY 829 jcopy Message 


7800 




LDA 


BUFPNT+1 


0470 


.BYTE 


$DO ;BNE 


6840 


C. 


ST LDA STEN,Y ; to buffer 


7810 




SBC 


8 >BIGBUF 


0480 


.BYTE 


$10 JBPL 


6850 




STA IBUF,Y 


7820 




STA 


ICBLH.X 


0490 


.BYTE 


$00 JBRK 


6860 




DEY 


7830 




LDA 


8 <BIGBUF ;reset the 


0500 


.BYTE 


$50 JBUC 


6870 




BPL C.ST 


7840 




STA 


BUFPNT ;pointers. 


0510 


.BYTE 


$70 J BUS 


6880 




JSR CHKFF ;are they SFF's? 


7850 




STA 


LINES 


0520 


.BYTE 


$18 J CLC 


6890 




BNE NOT.FF ; no . 


7860 




LDA 


8 >BIGBUF 


0530 


.BYTE 


$D8 JCLD 


6900 




JSR GET. TWO ;get 2 More 


7870 




STA 


BUFPNT+1 


0540 


.BYTE 


$58 JCLI 


6910 




BMI H-ERR loops. 


7880 




JSR 


TEST-DRU ;test drives 


0550 


.BYTE 


$B8 JCLU 


6920 


NOT. 


7890 




BNE 


SND. OUT jnot equal 


0560 


.BYTE 


$C9,$C5,$D5,$CD J CMP 


6930 




STA ADDR J address and 


7900 




PRINT INS-DST ; ask for 


0570 


.BYTE 


$DD,$D9,$C1,$D1 


6940 




STA FRO jconvert it to 


7910 




JSR 


GET— RET ;disk swap. 


0580 


.BYTE 


$E0,$E4,$EC JCPX 


6950 




LDA HXH jhex for the 


7920 




LDX 


8$20 


0590 


.BYTE 


$C0,$C4,$CC JCPY 


6960 




STA ADDR+1 joutput file. 


7930 


SND 


.OUT 


JSR CIOU jwrite out 


0600 


.BYTE 


$C6,$D6,$CE,$DE J DEC 


6970 




STA FR0+1 


7940 




BMI 


OUT-ERR joops. 


0610 


.BYTE 


$CA JDEX 


6980 




JSR BIN2HEX juake hex. 


7950 




JSR 


TEST-DRU j swap again? 






continued on page 82 


6990 




LDX 84 jcopy it in 


7960 




BNE 


SND.OU jno. 







JULY A.M.A.L.O.S. Computing 



UTILITY 

M/L EDITOR 



For use in machine-language entry. 



by Clayton Walnum 



M/L 



Editor provides an easy 
method to enter our 
machine-language list- 
ings. It won't allow you 
to skip lines or enter bad 
data. For convenience, you may enter listings 
in multiple sittings. When you're through typ- 
ing a listing with M/L Editor, you'll have a 
complete, runnable object file on your disk. 

There is one hitch: It's for disk users only. 
My apologies to those with cassette systems. 

Listing 1 is M/L Editor's BASIC listing. 
Type it in and, when it's free of typos, save 
a copy to disk, then run it. 

On a first run, you'll be asked if you're 
starting a new listing or continuing from a 
previously saved point. Press S to start, or 
C to continue. 

You'll then be asked for a filename. If 
you're starting a new listing, type in the file- 
name you want to save the program under, 
then press RETURN. If there's already a file 
by that name on the disk, you'll be asked if 
you wish to delete it. Press Y to delete the 
file, or N to enter a new filename. 

If you're continuing a file, type in the name 
you gave the file when you started it. If the 
program can't find the file, you'll get an er- 
ror message and be prompted for another file- 
name. Otherwise, M/L Editor will calculate 
where you left off, then go on to the data en- 
try screen. 

Each machine-language program in 
ANALOG Computing is represented by a list 
of BASIC data statements. Every line contains 
16 bytes, plus a checksum. Only the numbers 
following the word DATA need to be con- 
sidered. 

M/L Editor will display, at the top of the 
screen, the number of the line you're current- 
ly working on. As you go through the line, 
you'll be prompted for each entry. Simply 



type the number and press Return. If you 
press Return without a number, the default 
is the last value entered. 

This feature provides a quick way to type 
in lines with repetitions of the same number. 
As an added convenience, the editor will not 
respond to the letter keys (except Q for 
"quit"). You must either enter a number or 
press Return. 

When you finish a line, M/L Editor will 
compare the entries' checksums with the 
magazine's checksum. If they match, the 
screen will clear, and you may go on to the 
next line. 

If the checksums don't match, you'll hear 
a buzzing sound. The screen will turn red, 
and the cursor will be placed back at the first 
byte of data. Compare the magazine listing 
byte by byte with your entries. If a number 
is correct, press RETURN. 

If you find an error, make the correction. 
When all data is valid, the screen will return 
to gray, and you'll be allowed to begin the 
next line. 

Make sure you leave your disk in the drive 
while typing. The data is saved continuously. 

You may stop at any time (except when you 
have a red screen) by entering the letter Q for 
byte 1. The file will be closed, and the pro- 
gram will return you to BASIC. When you've 
completed a file, exit M/L Editor in the same 
way. 

When you've finished typing a program, 
the file you've created will be ready to run. 
In most cases, it should be loaded from DOS 
via the L option. Some programs may have 
special loading instructions; be sure to check 
the program's article. 

If you want the program to run automati- 
cally when you boot the disk, simply name 
the file AUTORUN.SYS (make sure you have 
DOS on the disk.). 



The two-letter checksum code pre- 
ceding the line numbers here is not 
a part of the BASIC program. For 
more information, see the "BASIC 
Editor II" elsewhere in this issue. 



LISTING 1: BASIC LISTING 



AZ IB DIM BFC16),H$(4),A$(l),B5tl),F$tl5> 
,F1S(15) 

LF 11 DIM MODS (4 J 

BK 29 LINE=ieeB:BETRN=lS5:BACK5P=126:CHK5 

UM=B:EDIT=B 
CO 39 GOSUB 458:P05ITIOH IB, 6:? "Btart or 

Hontinue? "JIGOSUB SBBi? CHRS(A) 
ZC 40 POSITION 10,8:? "FILENAME-J : INPUT F 

$:P0KE 752,1:? " " 
ft 58 IF LENCF$)<3 THEN POSITION 28,10:? 

GOTO 48 

*T 68 IF F$tl,210"D:" THEN F1S="D : " : FlS I 

3)=F$:G0T0 88 
Kt 78 F1$=F* 

TH 88 IF CHRSCA)="5" THEN 128 
FD 58 TRAP 430:0PEN «2, 4, 8, FlS : TRAP 118 
HO 10B FOR X=l TO 16:GET tt2,A:NEXT XiLINE 

=LINE+10:G0T0 108 
HM 110 CLOSE H2:0PEN 02, 9, B, FlS : GOTO 178 
UT 128 TRAP 168:0PEN U2,4,0,F1$:G05UB 448 

:P05ITI0N 18,18:? "FILE ALREADY EXISTS 

! !":POKE 752,9 
ZU 130 POSITION 18,12:? "ERASE IT? "MG05 

UB 500:P0KE 752,1:? CMRStA) 
UH 148 IF CHRSCA)="N" OR CHRS(A)="n" THEN 

CLOSE 1)2: GOTO 3B 
CtC 158 IF CHRSCAXVY" AND CHRS(AX>"y" T 

HEN 13B 

■H 168 CLOSE H2:0PEN U2,8,9,FI$ 

IE 178 GOSUB 45B:P05ITI0N 10,1!? " l.'lii:Wil« 

SUB: ";LINE:chksum=b 

GH 180 L1=3:F0R X=l TO 16:P0SITI0N I3*CX< 
10>*12*(X>9) ,X*2:P0KE 752,9:? "BYTE B" 

;x;": "; :gosub 318 

KH 190 IF EDIT AND L=B THEN BYTE=BF CX) : GO 
TO 218 

FY 208 byte=val:n$) 

OZ 281 MOD$=NS 

BU 210 POSITION 22.X+2:? BYTE;" " 

YZ 228 BF(X)=BYTE:CHK5UM=CHK5UM*BYTE*X:IF 

CHK5UM>9999 THEN CHK5UM=CHK5UM-10000 
MS 230 NEXT X : CHK5UM=CHK0UM*LINE : IF CHK5U 

M>9999 THEN CHK5UM=CI!K5UM-10009 
IG 240 POSITION 12,X+2:P0KE 752,8:? "CHEC 

K5UM: "; :L1=4:G05UB 319 
EH 259 IF EDIT AND L=B THEN 278 
OM 269 C=UAL(NS) 

SY 279 POSITION 22,X*2:? C)" " 
IL 280 IF C=CHK5UM THEN 308 
M 290 GOSUB 440:EDIT=l:CHK5UM:0:G0T0 188 
LM 300 FOR K=l TO 16:PUT 01, BF CX) : NEXT X: 

LINE=LINE*19!EDIT=8:G0T0 178 
FW 318 L=0 
KZ 320 GOSUB 500:IF (A=A5CC"0") OR A=A5CC 

"q")) AND X=l AND NOT EDIT THEN 420 
PO 330 IF AORETRN AND AOBACK5P AND (A<4 

8 OR A>57) THEN 328 
BX 331 IF AzRETRN AND NSz"" THEN N$=M0D$ 
TD 335 IF A=RETRN AND L=8 AND X>1 THEN 35 

8 
JR 340 IF C(A=RETRN AND NOT EDIT) OR A=B 

ACK5P) AND L=0 THEN 320 
DH 350 IF A = RETRN THEN POKE 752,1:? R 

ETURM 
GG 368 IF AOBACK5P THEN 408 
5A 378 IF L>1 THEN HS=NS CI, L"l) : GOTO 390 
AS 389 NS="" 

RE 399 ? CHRSCBACK5P) ; :L=L-1:G0T0 320 
BB 400 L=L*1!IF L>L1 THEN A=RETRN:G0T0 35 


MX 410 NSCL)=CHR4 (0) :? CHRS CA) ; : GOTO 320 
KN 420 GRAPHICS OiENO 
YT 430 GOSUB 440:P0SITI0N 10,10:? "NO 5UC 

H file!":for x=i to iooo:next x:close 

B2:G0T0 30 
FD 440 POKE 71Q,48:S0UND 8 , 100 , 12 , 8 : FOR X 

=1 TO 50INEXT X:S0UND 0, , , : RETURN 
MY 450 GRAPHICS 23:P0KE 16,112:P0KE 53774 

,112:P0KE 559,0:P0KE 710,4 
XR 460 DL=PEEKC560>t256XPEEK(561>+4:P0KE 

DL-1,70:P0KE DL+2,6 
HH 470 FOR X=3 TO 39 STEP 2:P0KE DL+X,2:N 

EXT X:F0R X = 4 TO 48 STEP 2:P0KE DL + X,8 

ZM 480 POKE DL + 41,65'.P0KE DL + 42 , PEEK CS60) 
:P0KE DL*43,PEEKC561> :P0KE 87,0 

AC 490 POSITION 2,0:? "analog mi editor": 

POKE 559,34:RETURN 
HZ 500 OPEN U1,4,8,"K:":GET H1,A:CLB5E Bl 
:RETURH jm 



64 



JULY A.IM.A.L.O.Q. Computing 



continued from page 25 



« 4 



5830 5H0H1 CMP JIFFY 

5840 BEQ SH0H1 

5850 STX BANKSEL 

5860 LDX 8PAGE3 

5870 LDA JIFFY 

5880 SH0H2 CMP JIFFY 

5890 BEQ SHOHZ 

5900 STX BANKSEL 

5910 LDX CH 

5920 CPX tt255 

5930 BEQ SHOHALF 

5940 LDX ttMAIN 

5950 STX BANKSEL 

5960 JMP HOLDNOM 

5970 * CSJhow half, pages 2 

5980 SHOSECHAF LDX UPAGE2 

5990 LDA JIFFY 

6000 5H0S1 CMP JIFFY 

6010 BEQ SH0S1 

6020 STX BANKSEL 

6030 LDX 8PAGE4 

6040 LDA JIFFY 

6050 SH0S2 CMP JIFFY 

6060 BEQ SH0S2 

6070 STX BANKSEL 

6080 LDX CH 

6090 CPX 8255 

6100 BEQ 5H05ECHAF 

6110 LDX ttMAIN 

6120 STX BANKSEL 

6130 JMP HOLDNOM 

6140 * Show all screens (F)astest 

6150 FASTEST LDA «255 

6160 FASTEST1 LDX ttPAGEl 

6170 STX BANKSEL 

6180 LDX »PAGE2 

6190 STX BANKSEL 

6200 LDX BPAGE3 

6210 STX BANKSEL 

6220 LDX KPAGE4 

6230 STX BANKSEL 

6240 CMP CH 

6250 BEQ FA5TE5T1 

6260 LDX ttMAIN 

6270 STX BANKSEL 

6280 JMP HOLDNOM 

6290 *= $02EO 

6300 .WORD INIZ 




LISTING 3: ASSEMBLY 



jSAVEttD:SYSEQU.M65 


10 


.PAGE "OSS 


SYSTEM EQUATES FOR 


ATARI" 




20 ; 






30 ; 


FILE = ttDN:SYSEQU. ASM 


40 j 






50 ; 






60 ; 


I/O CONTROL BLOCK 


70 J 






80 SAUEPC = * 

r 


; SAVE CURRENT OR 


b 

90 ; 






0100 


*- $0340 


;START OF SY5TEM 


IOCBS 




0110 


IOCB 




0120 


1 




0130 


ICHID *= *+l 


J DEVICE HANDLER I 


S CSET BY OS) 




0140 


ICDNO *= *+i 


; DEVICE NUMBER CS 


ET BY OS) 




0150 


ICCOM *= *+l 


;I/0 COMMAND 


0160 


ICSTA *= *+i 


Jl/O STATUS 


0170 


ICBADR *= *+2 


JBUFFER ADDRESS 


0180 


ICPUT *= *+2 


;DH PUT ROUTINE ( 


ADR-1) 




0190 


ICBLEN *= »+2 


; BUFFER LENGTH 


0200 


ICAUX1 *- *+l 


; AUX 1 


0210 


ICAUX2 *= *+l 


;AUX 2 


0220 


ICAUX3 *- *+i 


;AUX 3 


0230 


ICAUX4 *- *+l 


;AUX 4 


0240 


ICAUX5 *= *+l 


JAUX 5 


0250 


ICAUX6 *= *+l 


;AUX 6 


0260 


I 




0270 


IOCBLEN = *-IOCB ; LENGTH OF ONE I 


OCB 






0280 


J 




0290 


; IOCB COMMAND 


VALUE EQUATES 


0300 


J 




0310 


COPN = 3 


J OPEN 


0320 
D 


CGBINR = 7 


;GET BINARY RECOR 









ItBM 


s 




tiv^V7\ 


1 0330 CGTXTR = 5 


JGET TEXT RECORD 




0340 CPBINR = 11 
D 


JPUT BINARY RECOR 




0350 CPTXTR = 9 


;PUT TEXT RECORD 




0360 CCLOSE = 12 


JCLOSE 




0370 C5TAT = 13 


;get status 




0380 ; 






0390 J DEVICE DEPENDENT COMMAND EQUATE 




S FOR FILE MANAGER 






0400 ; 






0410 CREN - 32 


; RENAME 




0420 CERA = 33 


;ERA5E 




0430 CPRO = 35 


; PROTECT 




0440 CUNP = 36 


JUNPROTECT 




0450 CPOINT = 37 


; POINT 




0460 CNOTE = 38 


;NOTE 




0470 J 






0480 J AUX1 VALUES REQD FOR OPEN 




0490 ; 






050O OPIN = 4 


JOPEN INPUT 




0510 OPOUT = 8 


JOPEN OUTPUT 




0520 OPUPD = 12 


;OPEN UPDATE 




0530 OPAPND = 9 


JOPEN APPEND 




0540 OPDIR = 6 


JOPEN DIRECTORY 




0550 ; 






0560 .PAGE 






0570 J 






0580 ; EXECUTE FLAG DEFINES 




0590 ; 






0600 EXCYES = $80 


J EXECUTE IN PROG 




RESS 






0610 EXCSCR = $40 


J ECHO EXCUTE INP 




UT TO SCREEN 






0620 EXCNEM = $10 


EXECUTE START U 




P MODE 






0630 EXCSUP = $20 


COLD START EXEC 




FLAG 






0640 j 






0650 : MI5C ADDRESS EQUATES 




0660 j 






0670 CPALOC = $0A 


POINTER TO CP/A 




0680 MARMST = $08 


MAR, START (0=:C 




OLD) 






0690 MEMLO = $02E7 


AVAIL MEM (LOM) 




PTR 






0700 MEMTOP = $02E5 


AVAIL MEM (HIGH 




) PTR 






0710 APPMHI - $0E 


UPPER LIMIT OF 




APPLICATION MEMORY 






0720 INITADR = $02E2 


ATARI LOAD/INIT 




ADR 






0730 GOADR = $02E0 


ATARI LOAD/GO A 




DR 






0740 CARTLOC = $BFFA 


CARTRIDGE RUN L 




OCATION 






0750 CIO = $E456 


CIO ENTRY ADR 




0760 EOL = $9B 

R 

0770 ; 


END OF LINE CHA 








0780 J CP/A FUNCTION 


AND VALUE DISPLA 




CEMSNT 






0790 ; (INDIRECT THROUGH CPALOC) 




0808 ; IE. 


XPALOC) , Y 




0810 j 






0820 CPGNFN = 3 J 


GET NEXT FILE N 




A ME 






0830 CPDFDV = $07 , 


DEFAULT DRIVE ( 




3 BYTES) 






0840 CPBUFP = $0A , 


CMD BUFF NEXT C 




HAR POINTR CI BYTE) 






0850 CPEXFL = $0B t 


EXECUTE FLAG 




0860 CPEXFN = $0C j 


EXECUTE FILE NA 




ME (16 BYTES) 






0870 CPEXNP = $1C , 


EXECUTE NOTE/PO 




INT VALUES 






0880 CPFNAM = $21 , 


FILENAME BUFFER 




0890 RUNLOC = $3D 


CP/A LOAD/RUN A 




DR 






0900 CPCMDB = $3F , 


COMMAND BUFFER 




{60 BYTES) 






0910 CPCMDGO = $F3 






0920 ; 






0930 *= SAVEPC , 


RESTORE PC 




0940 ; 






0950 RANDOM = 53770 






0960 5AVM5C = $58 






0978 CONSOL = 53279 






0980 COLOR0 = 708 






0990 CRSINH = 752 






1000 BOOT? = 9 






1010 DINDEX = 87 





1020 HATABS - 794 

1030 CH = 764 

1040 5TRIG0 = 644 

1050 STICKO = 632 

1060 POKMSK = $10 



continued on page 69 



JULY A.IM.A.L.O.Q. Computing 



B&C . 

ComputerVisions 



3257 KIFER ROAD 

SANTA CLARA, CA 95051 

(408)749-1003 

(408) 749-9389 FAX 



A 



STORE HOURS 
TUE- FRI 10am - 6pm 

SAT - 10am - 5pm 
CLOSFD SUN - MON 



soo/ x i^/ x n: s o F"r w \a r re 

ALL TITLES ON DISK 

AWARDWARE (1050) 1.1.50 



efe, 



tioo/ x jl/ x E sc?r*rws\ 

ALL TITLES ON CARTRIDGE 



k re 



ENTERTAINMENT 

12 ADAMS ADVENTURES .. 14.95 
ALIANTS 26.95 



ALT. REALITY CITY 26 

ALT. REALITY DUNGEON. 26 

BEYOND CASTLE WOLF. ... 14 

DI. SHARK 26 



95 
95 
95 
95 
95 
95 
95 
9 5 
95 



DOP k WRESTLE 26 

UORDINO:1812 26 

13O0LDERDASH CONSTR.SET 17 

DRUCE LEE 17 

CASTLE WOLFENSTETN. ... 14 

DALLAS QUEST 7.95 

n-BIIC. 7.95 

P-15 STRIKE EAGLE .... 31.50 

EIGHT NIGHT 17 . 95 

GAUNTLET (64K) 31.50 

DEEPER DUNGEONS 22.50 

GUNSLINGER 26.95 

HARD HAT MAC 7.95 

JAWBREAKER 9.95 

KARATEKA 13 . 50 

KN1CKERUOCKERS 13 . 5U 

KORONIS RIFT 13 . 50 

LAST V - 8 8.95 

LEADERBOARD 13.50 

MAIL ORDER MONSTERS .. 13.50 

MICROLEAGUE BASEBALL.. 35.95 

MONTEZUMA'S REVENGE... 14.95 

MOUSEQUEST 17 . 95 

MOON SHUTTLE 7.95 

N1NJA 8.95 

OTL'S WELL 9.95 

O'KILEY'S MINE 9.95 

PIRATES OF BARB. COAST 22.50 

PREPPIE I £ II 9.95 

RESCUE ON FRACTAL AS... 13.50 

SILENT SERVICE 31 . 50 

SPEEDK1NG 8.95 

SP1DERMAN 5.35 

SPITFIRE 40 31 . 50 

STARFLEET I 44 .95 

SPY VS. SPY III 17.95 

STOCKHARKET 22.50 

STRIP POKER 26.95 

SUMMER GAMES 17 .95 

TAX DODGE 9.9 5 

THE HULK 5.35 

TOMAHAWK ( 64K ) 26.95 

TOP GUNNER 17 .95 

TOUCHDOWN FOOTBALL ... 13.50 

TRATLBLAZF.R 26.9 5 

UNIVERSE 44 .95 

ZAXXON (4 00/800) 13.50 

PROGRAMMING 

ACTION! 71.95 

ACTION! TOOLKIT 26 .95 

DAS1C XL 53.95 

BASIC XL TOOLKIT' 26.95 

BASIC XE 71.95 

DOS 2.5 7.95 

DOS XE 10.00 

DISK I/O 26.95 

KYAN PASCAL 62.95 

L1GHTSPEED C 35.95 

LOGO 19 .95 

MAC/65 71.95 

MAC/65 TOOLKIT 26.95 

MACRO ASSEMBLER 22 . 50 

PTLOT 19.95 

SPARTA DOS X 71.95 

PRODUCTIVITY 

ANIMATION STATION .... 89.9 5 

ATARIKRITER 29.95 

ATARIWRITER (CART ONLY)19.95 

ATAKIWRITER+ 39.95 

ATARI BOOKKEEPER 24.95 

ATARI MUSIC II 14.95 



BANK STREET WRITER.... 14.95 

BLAZING PADDLES 31 . 50 

CELEBRITY COOKBOOK ... 26.95 
COMPOTE YOUR ROOTS ... 3 5.95 

DATAMANAGER 1.7 . 9 5 

FAMILY FINANCE 6.95 

GUITAR WIZARD 26.95 

HOME ACCOUNTANT 19.95 

HOME FILING MANAGER. . 6.9 5 

HOMEPAK 24.95 

INVENTORY MASTER 80.95 

LETTER WIZARD 29.95 

MUSIC CONSTRUCTION SET 13.50 
NEWSROOM (1050 - 64K). 44.95 

NEWS STATION 26.9 5 

NEWS STA. COMPANION. . 26.95 

PAGE DESIGNER 26.95 

PRINT POWER (1050).... 13.50 

PRINTKIT (1050) 13.50 

PRINTSHOP 34.95 

P.S. COMPANION (61K) . 24.95 
I'. S. GRAPHICS LIBRARY 1 17.95 
P.S. GRAPHICS LIBRARY 2 17.95 
P.S. GRAPHICS LIBRARY 3 17.95 

PROOF READER 17.95 

PUBLISHING PRO 35.95 

ROBBER STAMP 26.95 

SYNTREND (130XE) 35.95 

SUPER MAILER 35.95 

THE LOTTO PROGRAM .... 17.9 5 

TIHEWISE 6.9 5 

TURBOWORD/80 COLUMN 

REQUIRES XEP80 44.95 

VIDEO T1TLESHOP (64K). 26.95 

GRAPHICS COMPANION. 17.95 

VIRTUOSO 29.9 5 

V1S1CALC 24.95 

EDUCATION 

ATARI LIGHT MODULE 

(REQ. STARTER SET) . 9.9 5 

BUZZWORD 35.95 

GRANDMA'S HOUSE (-10) 9.95 

HEY DIDDLE (AGE 3-10). 9.95 

MASTER TYPE 14 .95 

STATES AND CAPITALS .. 9.9 5 

TOUCH TYPING 9.95 

CBS (AGE 3-6) : 

ASTROGROVER 8.95 

BIG BIRD SPEC DELIVE 8.9 5 

ERNIE'S MAGIC SHAPE. 8.95 
DESIGNWAEE: 

MATHMAZE (6-11) .... 35.95 
MISSION ALGEBRA (13+)35.95 

SPELLICOPTER (6-11). 3 5.95 
TINK TONK (AGE 4-6) : 

ABC'S 8.9 5 

CO0NT AND ADD 8.9 5 

SMART THINKER 8.9 5 

SPELLING 8.95 

SUBTRACTION 8.95 

THINKING SKILLS .... 8.9 5 

ALL 6 TINK TONKS.. 39.95 
UNICORN! 

10 LITTLE ROBOTS 

(PRE-SCHOOL) 26.95 

FUN BUNCH (6-ADULT) 26.95 
RACECAR RITHHETIC 

(AGE 6+ ) 2 6.95 

WEEKLY READER (PRE-SCHOOL): 

STICKY BEAR SHAPES . 26.95 

STICKY BEAR NUMBERS. 26.95 

STICKY BEAR ABC'S .. 26.96 

STICKY BEAR OPPOSITE 26.9 5 

SB BASKET BOUNCE ... 26.9 5 

STICKY BEAR BOP .... 26.95 

RUN FOR IT 26.95 

PIC BUILDER 26.95 



ENTERTAINMENT 

3D TIC-TAC-TOE 9 . 

AIRBALL (XL/XE) 24 . 

ALIEN AMBUSH 9. 

ACE OF ACES .(XL/XE) . 24. 

ARCHON 19. 

ASTEROIDS 15 . 

ASTRO CHASE 14 . 

ATARI TENNIS 9 . 

ATLANTIS 14. 

BALL BLAZER 19. 

BARNYARD BLASTER 

(REQ. LIGHT GUN) ... 24 . 

HATTLEZONE 19. 

B.C. QUEST FOR TIRES 19 

BLUE MAX 19 , 

BOULDERS S, BOMBS .... 14. 

CAVERNS OF MARS 14, 

CENTIPEDE 14 . 

CHICKEN 9 . 

CHOPLIFTER 14 

CLAIM JUMPER (400/800) 9 

CLOUDBURST 9 

CRIME BUSTER 

(REQ. LIGHT GUN) . . 24 

CROSSBOW 24 

CROSSFIRE 9 

CRYSTAL CASTLES (XL/XE) 19 

DARK CHAMBERS (XL/XE). 24 

DAVIDS MIDNIGHT MAGIC 19 

DEFENDER 14 

DELUXE INVADERS 7 

DESERT FALCON 19 

DIG DUG 19 

DONKEY KONG 5 

DONKEY KONG JR 19 

EASTERN FRONT (1941), 19 

E.T. PHONE HOME 9 

FIGHT NIGHT 19 

FINAL LEGACY 19 

FOOD FIGHT (XL/XE)... 19 

FOOTBALL 14 

FROGGER 14 

GALAXIAN 9 

GATO 24 

CORF (400/800) 5 

GYRUSS 14 

HARDBALL 19 

INTO THE EAGLES NEST 19 

JOURNEY TO PLANETS . . 9 

JOUST 19 

JUNGLE HUNT 19 

KABOOMI 14 

KARATEKA 19 

KRAZY ANTICS 14 



95 
95 
9 5 
95 
95 
9 5 
9 5 
9 5 
95 
95 

9 5 
95 
95 
95 
95 
95 
95 
9 5 
95 



95 
95 
9 5 
95 
95 
95 
95 
95 
9 5 
95 
00 
9 5 
95 
95 
95 
95 
95 
9 5 
95 
95 
9 5 
00 
95 
95 
95 
95 
9 5 
95 
9 5 
9 5 
95 



LODE RUNNER 

MARIO BROS 

MEGAMAN1A 

MILLIPEDE 

MISSILE COMMAND . . . 

MOON PATROL 

MR. COOI 

MS . PAC MAN 

NECROMANCER 

ONE ON ONE (XL/XE) . 

PAC MAN 

PENGO 

POLE POSITION 

POPEYE 

Q-BERT 

QIX 

RESCUE ON FRACTALAS . 
RETURN OF THE JED1 . . 

ROBOTRON:2084 

SKY WRITER 

SLIME (400/800) 

SPACE INVADERS 

STAR RAIDERS 

STAR RAIDERS II 

SUBMARINEE COMMANDER 
SUHHER GAMES (XL/XE). 

SUPER BREAKOUT 

SUPER COBRA 

THUNDERFOX 

TRACK k FIELD 

TURMOIL 

WIZARD OF WOR 

PRODUCTIVE!' 



24. 

19. 

9. 

14, 



19. 
9 
19 
19. 
19. 

19. 
19. 
14 
14 
14, 
19 
14 
19 
14 



95 

95 
9 5 
(HI 
95 
95 
95 
9 5 



9 5 
(III 
9 5 
95 
95 



.95 
.00 



ATARIWRITER 

MK'ROFILER . 



EDUCATION 



ATARI LAB STARTER SET . 29. 

FUN WITH ART 14 . 

MATH ENCOUNTERS 9 . 

FISHER PRICE (PRE SCHOOL) 



DANCE FANTASY 8.95 

LINKING LOGIC 8. 9 5 

LOGIC LEVELS 8.95 

MEMORY MANOR 8 . 95 

SPINNAKER (AGE 3-10): 

ALP IN COLOR CAVES . 9.95 

ALPHABET ZOO 9.95 

DELTA DRAWING 9.95 

PACEMAKER 9 . 95 

KIDS ON KEYS 9.95 

KINDERCOMP 9.95 

(AGE 7 - ADULT) : 

ADV. CREATOR ( 4 00/800 ) . 9 . 95 

FRACTION FEVER 9.95 



I 



.S ZJF*ER S F»EC Z^± E S 

RECONDITIONED ATARI MERCHANDISE 

30 DAY WARRANTY 



III 



800 (4SK) 
COMPUTER 

$79.95 

400 (16K) 

COMPUTER 

$29.95 



1020 COLOR 
PRINTER/PLOTTER 

$19.95 



40 COLUMNS WIDE 
(new in box) 



SPACE ACE 
JOYSTICK 

$5.00. 

ATARI 
TRACKBALL 

$9.95 



ATARI 
BOOKKEEPER 
$14.95 - NO BOX 

ATARI 

NUMERIC 

KEYPAD $7.95 



1030 MODEM 

WITH EXPRESS! 

$24.95 

1010 PROGRAM 
RECORDER 

$29.95 



DISKETTES 

AS LOW AS 20 CENTS 

lOrOR S4.00 

100 FOR $29.95 

1000 FOR $200 

MOST ARE UNNOTCIIED 

WITH OI.DSOFTWARI: 



SHIPPING INFORMATION • Prices do nol include shipping and handling. Add S5.00 for small items ($8.00 Min. lor Canada). Add SS.00 lor disk drive. Add S2.75 for CO. I). 
Calif, res. include 7 l r sales (ax . Mastercard and Visa accepted if your telephone is listed in your local phone directory. Orders may be pre-paid with money order, cashier 
check, or personal check. Personal checks are held for three weeks before order is processed. C.O.D orders are shipped via UP.S and inusl be paid with cash, cashier check or 
money order. Int eruat ioual and APO orders must be pre-paid with cashier check or money order. $20.00 minimum, on all orders. All sales are final - no refunds • prices are 
subject to change. 

Phone orders accepted TUESDAY THROUGH FRIDAY from 10:00 am to 6:00 pm PST. 

We carry a full line of ATARI products - large public domain library - write or call for free catalogue 



PRICES SUBJECT TO CHANGE WITHOUT NOTICE - ALL SALES ARE FINAL 



CIRCLE #110 ON READER SERVICE CARD. 



# 



# 





CRYSTAL CASTLES 

Atari Corp. 

1 1 96 Borregas Avenue 
Sunnyvale, CA 94086 
(408) 745-2000 
Cartridge $29.95 



Reviewed by Matthew J.W. Ratcliff 

Crystal Castles is a challenging 3-D maze 
game that provides a lot of entertaining play- 
time for the novice and expert. The scenario 
is similar to the classic Pac-Man, but with 
a three-dimensional twist that adds a lot of 
depth to the game. 

Bentley Bear must navigate, with the as- 
sistance of a joystick, an endless maze of al- 
leys, stairways and elevators. These castles 
are viewed from a two-thirds overhead view, 
similar to the playfield of Zaxxon or Desert 
Falcon. However, the scenes in Crystal Cas- 
tles are mazes that do not scroll. Each dis- 
play is a unique image. Bentley can run and 
jump, picking up diamonds, rubies and pearls 
for points along the way. 

Of course, there are the usual bad guys to 
overcome. Bentley must avoid the Crystal 
Balls, Nasty Trees, Gem Eaters, Swarms of 
Bees, Ghosts, Skeletons and the wicked 
Witch Berthilda. Most of the foes seem fair- 
ly passive. Evading the bees and Berthilda 
can be quite difficult, however. This certainly 
makes for a more sophisticated game than the 
relentless "ghosts" in Pac-Man. On some 

JULY A.IM.A.L.O.G. Computing 



screens Bentley can pick up a magic hat, 
making him invincible for a short period of 
time. It allows Bentley to make short work 
of the remaining gems on a nearly complet- 
ed screen. 

The graphics in Crystal Castles are well 
done, but the sound effects are not terribly 
sophisticated. 

The player moves the joystick north, south, 
east and west to control Bentley Bear. The 
bear moves diagonally on the screen in 
response to these controls, since the mazes 
are oriented in this manner. It takes a bit of 
practice to get accustomed to this control, but 
is not difficult to master. 

There are ten levels to this game, with four 
castles in each, except the last. On the tenth 
level there is only one castle to conquer. The 
game ends when Bentley loses all his lives, 
or picks up the last gem on the final level. 
This game can actually be completed by 
playing through all ten levels. But, with 37 
different castles to overcome, it will take 
some serious playtime. 

When the lower levels of Crystal Castles 



have been mastered, the player need not 
replay them over and over again. Unlike Pac- 
Man, where the user may select a starting lev- 
el, Crystal Castles allows the player to use 
secret warps. This adds an element of mys- 
tery and surprise to the game. If Bentley 
makes just the right jump, at just the right 
location, he can warp to a higher level in the 
game. This warp earns the player extra lives 
and bonus points. Sometimes the magic hat 
is required to complete this maneuver. This 
eliminates the frustration of having to replay 
screens you already know by heart. 

Crystal Castles is not a difficult game to 
play. My four- year-old son can play through 
the first two game screens. However, at 
higher levels the playscreens become increas- 
ingly more complicated. More stairways, ele- 
vators and tunnels make the going tough. 
Crystal Castles meets the needs of seasoned 
arcade-game players, while allowing the com- 
plete novice the opportunity to make good 
progress in the game as well. This is a new 
generation of Pac-Man, with plenty of enter- 
taining challenges for all levels of game play. I 

67 



KEVS 00 

anno §1 

HITS 03 







W 



Reviewed by Matthew J.W. Ratcliff 

Into the Eagle's Nest is the finest game 
released by Atari in years. It provides some 
of the most exquisite graphics, superior sound 
effects and impressive playability on a game 
cartridge now available for the Atari 8-bit 
computers. 

The setting is a World War II Nazi fortress 
called the Eagle's Nest. Three allied soldiers 
have preceded you, placing explosives on all 
four floors of the castle. Each level is huge 
and will take quite some time to conquer. 
Your allies have been captured and taken 
prisoner. At the outset, one of three rescue 
missions may be selected. The fourth and fi- 
nal objective is to blow up the castle. 

This game is played from an overhead 
view. The main character, dressed in green 
battle fatigues, is controlled with a joystick. 
He can be moved in four basic directions. The 
screen scrolls smoothly as he battles his way 
through the rooms. He can be maneuvered 
to pick up keys to orange locked doors. The 
gray doors can be shot open. Each room and 
corridor presents more Nazis, dressed in drab 
gray, that must be shot twice to be obliterated. 

The player accumulates "hit points" as he 
is shot at by the opposing soldiers. The player 
is dead after 50 hits and the game ends. Cold 
food may be found in some of the rooms. 
Moving over the food, the solder will eat it 
and "heal" some of his hit points. Some- 
times, a first aid kit can be found to eliminate 
all current hits. 

Only 99 rounds of ordnance can be carried 
at a time, but there is plenty of that to be 
found. Should the player run out of ammo, 
it is wise to pick up more quickly— there are 
always more Nazis around the next corner. 
The player shoots from his right shoulder, so 



he can "hide" part of himself behind walls 
or other obstacles, while shooting the ene- 
mies. This technique is crucial to making any 
real progress in this challenging game. 

The player may also accumulate pendants 
and jewels— artifacts stolen by the Nazis— 
for more points. In many rooms closed chests 
are found. The player may shoot them open 
and find more treasures or explosives. Shoot- 
ing into an open chest filled with explosives 
is always fatal. Generally, it is unwise to use 
valuable time and ammunition to shoot chests 
in hopes of accumulating more treasures, 
since these are not essential to winning the 
game. 

The player must locate and activate the 
detonator by shooting it, to safely blast each 
level of the fortress, in the fourth scenario. 
Besides shooting doors and Nazi soldiers, the 
player may also shoot his way past boulders 
that block some rooms. Elevator passes are 
required to use the lifts to move on to a differ- 
ent floor of the castle. 

In the rescue missions, the player must lo- 
cate one of the captured prisoners and escort 
him to the safety of the storage room, where 
the game begins. The rescued prisoner is 
somewhat dazed by all the commotion and 
does not always cooperate. A shot in his 
general direction usually brings him to his 
senses and gets him back in gear. From the 
documentation it is apparent that the castle 
must be destroyed after the prisoner is res- 
cued, but I haven't been able to make it this 
far through the game yet. 

This is a superb action/graphics adventure 
game. It is extremely challenging, but not to 
the point of total frustration. It is one of the 
few games that can actually be played to com- 
pletion. The four different scenarios will keep 



INTO THE 
EAGLE'S NEST 

Atari Corp. 

1 196 Borregas Avenue 
Sunnyvale, CA 94086 
(408) 745-2000 
Cartridge $29.95 



the game play interesting for a long time to 
come. It is nice to have the fourth mission, 
in which the goal is to simply blow up the 
castle. This allows one to finish the game 
without the added complexities of locating a 
prisoner and keeping him in tow throughout 
the game. 

Into the Eagle's Nest is similar to Gaunt- 
let, from Mindscape. Gauntlet presents the 
player with many different enemies and mul- 
tiple ways to eliminate them. Eagle's Nest 
provides only one enemy and only one 
method of elimination. I don't find this a flaw 
however, since Eagle's Nest plays faster, and 
it is easier to master the game's controls. This 
allows the player to concentrate more on the 
adventure than the mechanics of manipulat- 
ing the main character. 

Into the Eagle's Nest has one particularly 
annoying "feature." At the end of each game, 
where a high score is achieved, the user is 
allowed to enter his name from joystick con- 
trols. This requires ten joystick-button press- 
es, plus several more to start the next game. 
The names are not stored to disk, nor are they 
saved in battery-backed cartridge RAM, simi- 
lar to The Legend ofZelda for the Nintendo 
Entertainment System. Therefore, this feature 
is of no use unless you leave your computer 
on for long periods of time or have a lot of 
game tournaments with friends. At the name 
entry screen, the Start key should send con- 
trol directly to the next game; it doesn't. 

Into the Eagle's Nest is a refreshing new 
offering that marks the beginning of the new 
gaming age from Atari. I think we can ex- 
pect more original titles with top-notch 
graphics, sound and playability in the near 
future. Into the Eagle's Nest is a stellar game, 
one that I have found highly addictive, fl 

JULY A.M.A.L.O.Q. Computing 



continued from page 65 

1070 RAMTOP = $6A 




1080 


SDMCTL = S022F 


1090 


STOCK = $0100 


HOB 


* 


1110 


IRQEM = $D20E 


1120 


NMIEN = SD40E 


1130 


5KCTL = $D2QF 


1140 


DMACTL = $D400 


1150 


KBCODE = $D209 


1160 


POTGO = SD2QB 


1170 


AUDCTL = $D208 


1180 


AUDF3 - $D204 


1190 


AUDC3 - $D205 


1200 


PACTL = $D302 


1210 


PORTA = SD30O 


1220 


PORTB = $1)301 


1230 


* 


1240 


* Tiner counter: 


1250 


JIFFY = 20 ; 60HZ Clock 


1260 


FILENAME = $0400 ; cassette buffe 


r at 


$400 


1270 


; will be used as FILENAME buffer 


for 




1280 


; file i/o oriented operations. 


1290 


DLI5T = $0230 ; display list po 


inter 





OSE FILE 86 

0140 ;WE IGNORE ANY ERRORS FROM THE CL 



L/ST/Nfi 4: ASSEMBLY 

6 J5AUE8D: GRAPHICS. M65 
10 ; 

GRAPHICS g 



ENTRY: A-REG CONTAINS GRAPHICS MO 
EXIT: Y-REG HAS COMPLETION STATU 



20 

30 

40 

DE 

50 

S 

60 ; 

70 SNAME .BYTE "5:",155,e 

80 GRAFIX 

90 PHA ;SAUE 'G- 

0100 LDX 86*$10 ;FILE 6 

0110 LDA 8CCL05E 

0120 STA ICCOM.X 

0130 JSR CIO J FIRST ME MUST CL 



OSE 
0150 ; 
0160 
0170 
S FILE 
0180 
0190 
0200 

NAME "Si" 
0210 



LDX 86*$18 
LDA HCOPN 



; AGAIN, FILE 6 
;HE MILL OPEN THI 



STA ICCOM,X 

LDA 8 <SNAME 

STA ICBADR.X ; ME USE THE FILE 



LDA 8 >SNAME 

STA ICBADR+1,X ;BY POINTING A 



0220 

T IT 

0230 ; 

0240 ;ALL IS SET UP FOR OPEN, NOW 

0250 ;ME TELL CIO t& 5:> MHAT KIND OF 

OPEN 

0260 ; 

0270 PLA 

APHICS MODE 

0280 STA ICAUX2,X {IS GIVEN TO 'Si 

■ 

0290 ; CNOTE THAT S: IGNORES UPPER BIT 



;OUR SAVED ' G' GR 



5 OF AUX23 



0300 
PPER BITS 



031O 
0320 
RTED 
0330 
0340 



AND 8$F0 
EOR 8510 



JNOM ME GET THE U 
;AND FLIP BIT 4 



CS: EXPECTS THIS BIT TO BE INVE 



;FR0M MHAT NORMAL BASIC USAGE IS) 
ORA 8$0C ;ALLOM READ & MRI 
TE ACCESS FOR CIO 

0350 STA ICAUX1,X ; FOR CIO AND Si 
0360 JSR CIO JOPEN Si 
0370 RT5 :GRAPHICS MODE 'G 

■ NOM OPEN 



0388 


.MACRO GRAPHICS 


0390 


.IF y.OOi. 


0400 


.ERROR "GRAPHICS LEN 


0410 


■ENDIF 


0420 


.IF Xl>255 


0430 


LDA XI 


0440 


.ELSE 


0450 


LDA 8X1 


0460 


.ENDIF 


0470 


JSR GRAFIX 


0480 


.ENDM 



FOR OUR DISK 
SUBSCRIBERS 

The following programs from this 
issue are on disk: 



THE ANALOG #74 DISKETTE COW] 
MAGAZINE FILES. THEY ARE I,: 



FILENAME. EXT LANG. LOAD ARTICLE NAME 



DISKMABT 


OBJ 


ML 


(#3) 


DISK MASTER 


C5ETDISP 


OBJ 


ML 


(#3) 


CHARACTER SET DISPLAY 


AUTOMAKE 


HAS 


BASIC 


LOAD 


AUTORUN.SYS IN BASIC 


CHAOS 


BAS 


BASIC 


LOAD 


CHAOS 


DEGASVUF 


OBJ 


ML 


(#3) 


DEGAS VIEW 


DEGAS'/UF 


OBJ 


MAC/65 


LOAD 


DEGAS VIEW SOURCE 


GRAPHICS 


M65 


MAC/65 


LOAD 


DEGAS VIEW SOURCE 


SySEQU 


M6S 


MAC/65 


LOAD 


DEGAS VIEW SOURCE 


I OMAC 


LIB 


MAC/65 


LOAD 


DEGAS VIEW SOURCE 


MAZERUNR 


OBJ 


MI, 


(#3) 


MAZER UNNER 


MAZERUNR 


M65 


MAC/65 


LOAD 


MAZERUNNER SOURCE 


MLEDITOR 


BAS 


BASIC 


LOAD 


M/L EDITOR 




LST 


BASIC 


ENTER 


BASIC EDITOR II 


SIDE 2: 










FILENAME 


EXT 


LANG. 

MAC/65 


LOAD 
LOAD 


ARTICLE NAME 


DMPT1 


M6S 


DISK MASTER SOURCE 


DMPT2 


M65 


MAC/65 


LOAD 


DISK MASTER SOURCE 


DMPT3 


M65 


MAC/65 


LOAD 


DISK MASTER SOURCE 


DMPT4 


M65 


MAC/65 


LOAD 


DISK MASTER SOURCE 


DMPT5 


M6S 


MAC/65 


LOAD 


DISK MASTER SOURCE 


SVSEQU 


M65 


MAC/6 5 


LOAD 


DISK MASTER SOURCE 


CSETDISP 


ACT 


ACTION! 


(11) 


CHAR. SET DISP. SOURCE 


CSET2 


ACT 


ACTION! 


(#1) 


"CHAR. SET DISP. SOURCE 



TO LOAD YOUR ANALOG DISK 



1) INSERT BASIC CARTRIDGE (NOT REQUIRED FOR XE 
OR XL COMPUTERS ) . 



2) TURN ON DISK DRIVE AND MONITOR. 

3) INSERT DISK IN DRIVE. 

4) TURN ON COMPUTER. (XL AND XE OWNERS: DO NOT 
HOLD DOWN OPTION KEY ! ) 



WARNING: BEFORE YOU RUN A PROGRAM. READ THE 

APPROPRIATE ARTICLE IN THE MAGAZINE. 
FAILURE TO DO SO MAY YIELD CONFUSING 
RESULTS. 

NOTE: ONLY PROGRAMS WITH THE .BAS 08 .OBJ 
EXTENSION MAY BE RUN FROM THE MENU. 
OTHER PROGRAMS SHOULD BE LOADED AS 
INSTRUCTED IN THE LOADING NOTES AND 
MAY REQUIRE ADDITIONAL SOFTWARE AS 
LISTED BELOW. HOWEVER. YOU SHOULD 
NOT ASSUME THAT EVERY FILE WITH 
THE PROPER FILE EXTENSION WILL RUN 
FROM THE MENU. YOU MAY HAVE TO MOVE 
CERTAIN PROGRAMS TO A DIFFERENT DI3K 
TO OBTAIN CORRECT RESULTS. 



EXT DESCRIPTION 



.M6S REQUIRES THE MAC/65 ASSEMBLER 

.AMA REQUIRES THE ATARI MACRO ASSEMBLER 

.ASM REQUIRES THE ATARI ASSEMBLER/EDITOR 

.ACT REQUIRES THE ACTION! CARTRIDGE 

.LGO REQUIRES THE ATARI LOGO CARTRIDGE 

.SYN REQUIRES THE SYNAPSE SYN ASSEMBLER 



LOADING NOTES 



LOAD BASIC PROGRAM: 
ENTER BASIC PROGRAM: 
LOAD MAC/65 PROGRAM: 
ENTER ASM/ED PROGRAM: 
LOAD LOGO PROGRAM: 
LOAD SYN/AS PROGRAM: 



LOAD "D: FILENAME. EXT" 
ENTER "D:FILENAME.EXT" 
LOAD «D:FILENAME.EXT 
ENTER »D:FILENAHE.EXT 
LOAD "D: FILENAME. EXT" 
LOAD "D:FILENAME.EXT" 



II: SEE ACTION! MANUAL. 

#2: SEE ATARI MACRO ASSEMBLER MANUAL. 

#3: MAY ALSO BE LOADED FROM DOS USING THE "I." 

OPTION OF THE DOS MENU. 
II: THIS FILE SHOULD BE TRANSFERRED TO ANOTHER 

DISK AND RENAMED "AUTORUN. SYS" . 
15: READ THE APPROPRIATE ARTICLE FOR INSTRUCTIONS 

ON USING THIS FILE. 



JULY A.N.A.L.O.Q. Computing 






BASIC 
Editor E 



by Clayton Walnum 



BASIC Editor II is a utility to help you 
enter BASIC program listings pub- 
lished in ANALOG Computing. To 
simplify the identification of errors, 
each program line is evaluated im- 
mediately after it's typed, eliminating the 
need for cumbersome checksum listings. 
When you've finished entering a program us- 
ing BASIC Editor II, you can be certain it 
contains no typos. 

An option is provided for those who wish 
to use standard BASIC abbreviations. Also, 
the program retains all Atari editing features. 
Finally, for those who prefer to type programs 
the conventional way, using the built-in edi- 
tor, a post-processing mode is available. It al- 
lows you to check typing after the entire 
listing has been entered. 

Typing in the Editor 

To create your copy of BASIC Editor II, 
follow the instructions below— exactly. 

Disk version: 

(1) Type in Listing 1, then verify your work 
with Unicheck (see Issue 39). 

(2) Save the program to disk with the com- 
mand SAVE "D^DITORLl.BAS". 

(3) Clear the computer's memory with the 
command NEW. 

(4) Type in Listing 2, then verify your work 
with Unicheck. 

(5) Run the program (after saving a back- 
up copy) and follow all the on-screen 
prompts. A data file will be written to your 
disk. 

(6) Load Listing 1 with the command 
LOAD "EDITORL1.BAS". 

(7) Merge the file created by List- 
ing 2 with the command ENTER 
"D.ML.DAT". 



(8) Save the resultant program with the com- 
mand LIST "D:EDITORII.LST". 

Cassette version: 

(1) Type in Listing 1 and verify your work 
with Unicheck. 

(2) Save the program to cassette with the 
command CSAVE. (Do not rewind the 
cassette.) 

(3) Clear the computer's memory with the 
command NEW. 

(4) Type in Listing 2 and verify your work 
with Unicheck. 

(5) Run the program and follow the on- 
screen prompts. A data file will be written to 
your cassette. 

(6) Rewind the cassette. 

(7) Load Listing 1 with the command 
CLOAD. 

(8) Merge the file created by Listing 2 with 
the command ENTER "C:". 

(9) On a new cassette, save the resultant pro- 
gram with the command LIST "C:". 

Using the Editor 

Take a look at one of the BASIC program 
listings in this issue. Notice that each program 
line is preceded by a two-letter code. This code 
is the checksum for that line; it's not a part 
of the program. 

To enter a program listing from the maga- 
zine, load BASIC Editor II with the ENTER 
command, and run it. You'll be asked if you 
wish to allow abbreviations (see your BASIC 
manual). If you do, type Y and press 
RETURN. Otherwise, type N. 

Note: If you set BASIC Editor II to allow 
abbreviations, the program will run slightly 
slower. 

Your screen will now be divided into two 
"windows." The upper window will display 
each line after it's processed, as well as the 



checksum generated for that line. The lower 
window is where program lines are typed and 
edited. 

When the program's waiting for input, the 
cursor will appear at the left margin of the typ- 
ing window. Type a program line and press 
RETURN. The line will be evaluated and 
reprinted in the message window, along with 
the checksum generated. 

If the checksum matches the one in the 
magazine, then go on to the next program line. 
Otherwise, enter the command E (edit) and 
press RETURN. The line you just typed will 
appear in the typing window, where you may 
edit it. When you think the line has been cor- 
rected, press RETURN, and it'll be 
reevaluated. 

Note: You may call up any line previously 
typed, with the command E followed by the 
number of the line you wish to edit. For ex- 
ample, E230 will print Line 230 in the typ- 
ing window. Do not attempt to edit any 
program lines numbered 32600 and higher. 
These lines fall within the BASIC Editor II 
program. 

If you're using BASIC abbreviations, the 
two versions of the command E work slightly 
differently. The command E, without a line 
number, will call up the line exactly as you 
typed it. When you append the line number, 
the line will be printed in its expanded (un- 
abbreviated) form. 

Leaving the Editor 

You may leave BASIC Editor H at any time, 
by entering either B (BASIC) or Q (quit). If 
you type B, the Editor will return you to BAS- 
IC. Enter LIST to review your work, if you 
wish. Note that lines 32600 and above are the 
Editor program. Your work will appear be- 
fore these lines. To return to the Editor, type 
GOTO 32600. 

Type Q, and you'll be asked if you really 
want to quit. If you type Y, the Editor pro- 
gram will be erased from memory, and you 
may then save your work in any manner you 
like. If you type N, the Q command will be 
aborted. 



Large listings 



If the program you're entering is particu- 
larly long, you may need to take a break. 
When you want to stop, type Q and press 
RETURN, then save your work to disk or cas- 
sette. When you're ready to start again, load 
the program you were working on, then load 
BASIC Editor B with the ENTER command. 
Type GOTO 32600, and you're back in 
business. 

JULY A.N.A.L.O.Q. Computing 



The post-processor 

Many people may not want to use BASIC 
Editor II when entering a program listing, 
preferring, instead, the Atari's built-in editor. 
For that reason, BASIC Editor II will allow 
you to check and edit your programs after 
they've been typed. 

To take advantage of this option, type any 
magazine program in the conventional man- 
ner, then save a copy to disk or cassette (just 
in case). With your typed-in program still in 
memory, load BASIC Editor II with the 
ENTER command, then type GOTO 32600. 

Respond with N to the "abbreviations" 
prompt. When the Editor appears on your 
screen, enter the command P (post-process), 
and the first program line will appear in the 
typing window. Press RETURN to enter it into 
the Editor. 

The line will be processed, and the check- 
sum, along with the program line, will be 
printed in the upper window. If the checksum 
matches the one in the magazine, press 
RETURN twice, and the next line will be 
processed. 

If you find you must edit a line, enter the 
command E, and the line will be moved back 
to the typing window for editing. 

When the entire listing has been checked, 
you'll be asked if you wish to quit. Type Y 
and press RETURN. The Editor program will 
be removed from memory, and you may then 
save the edited program in any manner you 
wish. 

Murphy's Law 

Anyone who's been associated with comput- 
ing knows this is the industry Murphy had in 
mind. You may find that, after typing a pro- 
gram with BASIC Editor II , it still won't run 
properly. There are two likely causes for this. 

First, it may be that you're not following the 
program's instructions properly. Always read 
the article accompanying a program before at- 
tempting to run it. Failure to do so may present 
you with upsetting results. 

Finally, though you can trust BASIC Edi- 
tor U to catch your typos, it can't tell you if 
you've skipped some lines entirely. If your 
program won't run, make sure you've typed 
all of it. Missing program lines are guaran- 
teed trouble. 

One last word: Some people find it an un- 
necessary and nasty chore to type REM lines. 
I don't condone the omission of these lines, 
since they may be referenced within the pro- 
gram (a bad practice, but not unheard of). If 
you want to take chances, BASIC Editor II is 
willing to comply. 



When you 've finished entering a 

program using BASIC Editor II, you 

can be certain it contains no typos. 



Listing 1. 
BASIC listing. 



32608 IF FL THEM 32616 

32602 DIM L5tll5),5VStll5>,C2*I2),BStl 

15),M$tll9),5$C98>,E5(69),A$Cl> |FL=1I5 

TMTAB=PEEK U36) +PEEK C1371«256 

32604 GRAPHICS 8 ! POKE 718, ! P = 8 ! ABR = B 1 

? "ALLOW ABBREVIATIONS"; IINPUT ASIIF A 

$ = "Y" OR AS="y" THEN ABR=1 

32606 BSU)=" ":B$I115)=" "!B$C2)=BS 

32616 OPEM B17,4,8,"El"iLS=" "IG05UB 3 

2662I5TART=B 

32618 POKE 766,l:P0KE 83, 3? : POSITION 1 

,3:IF LENCLSX39 THEM ? LSlGOTO 32624 

32620 IF LENCLSX77 THEM ? L$fl,38)l? 

L$C39,LENCL$)) IGOTO 32624 

32622 ? LSC1,3B>|? LSC39,76)I? l*C77,L 

EN(LS)> 

32624 POKE 752,0!P0KE 766, OlPOKE 555,3 

4!P0KE B2,1:P0KE 83 , 38 i POSITION 8,181? 

'■ "jlINPUT 817;LS|P0KE 766,1 
32626 IF aS="P" OR LS="P") AND STARTr 
THEN P=llL$r"" 

32628 IF L$="E" OR LS="e" THEN E=1!P0S 
ITION 1,10!? 5VS GOTO 32624 
32630 IF LS="0" UR L$="q" THEN 32898 
32632 IF L«="" AND P=l THEN 32686 
32634 IF LS="" THEN 32624 
32636 IF LS="B" OR LS="b" THEM GRAPHIC 
5 8!? "TVPE "GOTO 32608' TO CONTINUE"! 
END 

32638 IF LSU,1)="E" OR LStl,l>="e" TH 
EN E=llTRAP 32624iEL=UALtL*C2>) IP05ITI 
ON 1,9ILIST ELIGOTO 32624 
32640 5U$=L$ITRAP 32624 1 X=VAL <L$> 
32642 5TART=11IF P AMD NOT E THEN 326 
52 

32644 G05UB 32674HF MOT ABR OR P THE 
N 32652 

32646 POKE 766,0!? CHRS 1125) I POSITION 
0,3!L=VALILSJ !LI5T Ll? I? I? "CONVILS 
= B$ 

32648 POSITION 8,8:P0KE 842,13!ST0P 
32650 POKE 842,12IA=USRCADRISS),ADRILS 
>,4> !L$=L$C1,A> 

32652 CHK5UM=U5RC6DRCM$),ADRCLS>,LENfL 
S)> !CHK5UM=CHKSIimPEEK 11542) »65536 
32654 CHK=CHK5UM-(IMT(CHK5UM/676)*676) 
!HI=INTCCHK/26) ! L0=CHK- CHI*26> IC2*C1>= 
CMRS(HI+65) lC2$C2)=CHRStLO*65) 
32656 IF NOT P OR E THEM E-8:G05UB 32 
662!IF MOT P THEM 32668 
32658 POKE 8S,39!P0KE 752,1!F0R X=3 TO 
5!P05ITI0M 1,X|? B*tl, 38) [POSITION 1, 
X+7:? B$(1,3B> !MEKT XlPOKE 83,38 
32668 POKE 766.11P0KE 83, 38 ! POSITION 6 
,71? C2$!P0KE 7S2,0!G0T0 32618 
32662 GOSUB 327B2IP0KE 766.8SP0KE 752, 
II? "S"1P0KE 82,1IDL=PEEK1560)+256»PEE 
KC56D-M 

32664 POKE DL-l,76lP0KE DL*2,6lP0KE DL 
*3,112iP0KE DL*4,112lP0KE DL+5.112IP0K 
E DL*13,112|P0KE DL+14,112 
32666 POKE DL+22, 112 1 POKE DL*23,112lP0 
KE DL*24,65tP0KE DL+25, PEEK CS60) I POKE 
DL*26,PEEKt561) : POKE 83.39 
32668 POSITION 20,81? 
ff "IPOSITIOM 0, 7 ! " 

l?iffl:mjii;j 




IPOSITIOM 1,7 

32672~P0KE' 559,34 I RETURN 

32674 GRAPHICS OlPOKE 5S9,BIP0KE 766,1 

IPOKE 82, OlPOKE 83, 39 1 POSITION 8,31? L 

$!? I? I? I? "COMT"!POSITION 8,8 

32676 POKE 842.13I5T0P 

32678 POKE B42.12ITRAP 32682 I A=USR tADR 

tES), HAULS)) IIF A=4 THEN POP IGOTO 32 

32680 RETURN 

32682 GOSUB 32662IS0UMD 8,75, 10, 8 IFOR 

K=l TO 20INEKT KlSOUMD 8,8, 8, BIPOSITIO 

N 1,31? "SVMTAX ERROR!"!POKE 766,1 

32684 POKE 83, 38 1 POSITION 1,181? SV$|G 

0T0 32624 

32686 LIME = PEEK CSTHTAB) tPEEK C5TMTAB+11 

*2S6!IF LINE>32S99 THEN 32698 

32688 0FS=PEEK<5TMTAB+2J I 5TMTAB=5TMTAB 

♦0F5IP0SITI0N 1.9ILIST LINEIGOTO 32624 

32690 POKE 766, B I POSITION 1,181? "READ 

V TO OUIT";HNPUT ASIIF ASO"Y" THEN P 

05ITION 1,101? B$ll, 38) IGOTO 32624 

32692 GRAPHICS 81? I? I? IFOR X=32600 

TO 32636 STEP 21? XINEXT XI? "C0NT"IP0 

SITION B,BIPOKE 842,131ST0P 

32694 POKE 842, 12 1 GRAPHICS 01? I? I? I 

FOR X=32638 TO 32674 STEP 21? XINEXT X 

I? I? "COMT"lPOSITIOM 8,B 

32696 POKE 842.13IST0P 

32698 POKE 842.12IGRAPHICS Bl? I? I? I 

FOR X=32676 TO I27B2 STEP 21? XlMEXT X 

I? I? "POKE 84Z,12"lP0SITI0M 8,8 



32708 POKE B42,13I5T0P 

32702 POKE 16.112IP0KE 53774, 112 IRF.TIIR 

N 



CHECKSUM DATA. 

(see issue 39's Unicheck) 



32608 DATA 6,665,923,757,889,171,225,8 
98,532.499,918,267,912,144,735,8453 
32638 DATA 97,358,238,693,706,878,317, 
127,36,597,238,258,182,430,168,5315 
32668 DATA 864,953,472.385,887,724,72, 
687,988,736,625,612,672,184,891,9672 
32698 DATA 8,856,85,949 



Listing 2. 
BASIC listing. 

18 DIM L$tl2B>,ML*C115),A$Cl> 
20 GRAPHICS 8IP0KE 710,81? "QI5K OR HA 
55ETTE"; IINPUT ASlIF AS<>"C" AND A*<>" 
D" THEN 28 

30 IF A$="C" THEM SB 

40 ? "PLACE FORMATTED DISK IM DRIUE"!? 
"THEN PRESS RETURN" I INPUT LSlOPEK HI, 
8,B,"DlML.DAV"lG0T0 68 

50 ? I? "READY CASSETTE, PRESS RETURN" 
;UMPUT LSlOPEN HI, 8, B. "CI" 
60 L5="32608 M$ C1)="|LS tl3)=CHRS 134) 
70 N=119lG0SUB 138 1 LS C14) =ML* 11, 58) |L* 
(LENCL$)+1)=CHRS134)I? tll)L$ 
80 L$U)="32618 MS C59)="IL$ tl4)=CHR$ t3 
4) |L$[15)=ML*C59> |LS(LENCL$) +1)=CHR*13 
4) I? HIjLS 
9B LSC1)="32612 5«r"|L$C18)=CHRS (34) 

100 MLS= N = 98IG05UB 138 I L* til) =MLS I L 

$(LEMtLS)tl)=CHRS(S4) I? B1JL* 

118 LSC1)="32614 ES:"!L$(10)=CHR$C34) 

120 MLS=""IN=69IG05UB 138 I L* 111) =ML$ I L 

$(LENtL*)tl)=CHR$t34) I? ttllL$!END 

130 FOR Xrl TO NlREAD AIMLS (X)=CHR$ (A) 

INEXT XIRETURN 

140 DATA 164,184, 133,284, 184, 133, 283,1 

04,104,133,205,169,8,141,3,6,141,2,6,1 

41,4,6,141,5,6 

150 DATA 141,6,6,238,3,6,32,68,218,172 

,2,6,177,203,133,212,32,178,217,32,182 

,221,32,68,218 

168 DATA 173,3,6,133,212,32,178,217,32 

,219,218,32,218,217,165,212,141,8,6,16 

5,213,141,1,6,24 

176 DATA 173,8,6,189,4,6,141,4,6,173,1 

,6,189,5,6,141,5,6,144,3,238,6,6,238,2 

188 DATA 6,172,2,6,196,265,288,176,173 

, 4, S, 133, 212, 173, 5, 6, 133, 213, 96 

198 DATA 184,184,133,264,184,133,283,1 

84,184,141,255,6,169,8,133,213,216,165 

,86,133,265,165,89,133,286 

ZOO DATA 174,255,6,24,165,285,165,48,1 

33,205,144,2,230,206,282,288,242,168,0 

,177,205,261,64,144,18 

218 DATA 281,96,144,19,201,128,144,18, 

201,192,144,6,281,224,144,7,176,8,24,1 

85,32,144,3,56,233 

226 DATA 64,145,203,288,192,114,248,2, 

208,215,177,283,201,32,288,3,136,288,2 

47,288,132,212,96 

238 DATA 184,184,141,254,6,184,141,253 

,6,169,6,133,213,216,165,136,133,285,1 

65, 137, 133, 286, 168, B, 177 

248 DATA 285,205,253,6,288,8,280,177,2 

85,205,254,6,248,15,168,2,177,265,24,1 

81,285,133,205,144,228 

250 DATA 230,286,176,224,168,4,177,285 

,281,55,248,4,168,8,240,8,132,212,96 



CHECKSUM DATA. 

(see issue 39's Unicheck) 



IB DATA 283,265,465,844,294,573,652,27 
B,978,797,278,275,835,2B9,IB1,7639 
58 DATA 355,94,254,428,935,848,588,41 __ 
,974,564,5435 |H 



JULY A.N.A.L.O.Q. Computing 



71 



■-. , j?'"> 





^r&^&sv/;*^ 




by Arthur Leyenberger 



I have talked about it before, and I'm sure 
I will talk about it again. Technology! 
Our world is surrounded by, and 
couldn't exist without, the wonders that 
have been made possible by modern 
technology. 

I remember reading a book in the late 1970s 
called Computer Lib by Ted Nelson. It con- 
tained all kinds of interesting information 
about computers, how they worked and how 
they were and would be used. I was fascinated 
by the future of computers. He was really 
talking about technology. 

I recall one of the topics that was especially 
futuristic included the use of computers in 
banking. This was many years before the ad- 
vent of electronic funds transfer (EFT) and 
automated teller machines. I could barely im- 
agine what it would be like to have money 
transferred electronically from one computer 
to another. 

At the time I thought I wouldn't want my 
bank account to use this new technology. I 
feared that one little computer mistake could 
wipe out my savings or cause unnecessary 
hassles trying to correct it. Now, of course, 
7a 



I take EFT for granted. Twice a month my 
paycheck is automatically transferred from 
the company's bank computer to my bank's 
computer. I rarely give it a second thought. 

The same is true for automated tellers. The 
convenience and accessibility of these 
machines have changed my life. No longer 
do I have to make special arrangements to 
have access to my own money (i.e. banking 
hours). In fact, it seems so natural. However, 
I still refuse to deposit money into my account 
with one of these machines. 

We are touched by technology in so many 
ways. Even the car I drive is affected. It 
would be impossible to have a car that had 
both good performance and good gas mile- 
age without a computer-controlled engine. 

The most obvious example of technology 
is the computer that we all use and (usually) 
love. It still provides plenty of power for all 
kinds of tasks. One of the reasons many Atari 
users refuse to upgrade to the ST is that their 
8-bit machine can run hundreds of programs; 
most users have not exhausted the potential 
of their computer. That is as much a testa- 
ment to the power of the 8-bit Atari as it is 
to the users. 



New Disk Technology 

Another improvement in technology is just 
around the corner and will dramatically af- 
fect the way we use computers. A new storage 
technology has been developed that will 
revolutionize the design of future computers. 
It uses a combination of magnetic and opti- 
cal mediums to create a floppy disk that can 
store 20 megabytes of data. 

The original Atari 810 disk drives could 
store only 90K of data on a 5 '4-inch floppy 
disk. This was because they used only one 
side of the disk and a low-density data for- 
mat. Over the years a number of new disk 
drives were introduced by Indus, Astra and 
others that used either twice the density or 
both sides of the disk to store data. Double- 
sided, double-density disks, like those used 
on IBM PCs and clones, can store 360K of 
data. 

With the arrival of the AT and DOS 3.0, 
IBM introduced 1.2-megabyte floppy disks. 
Later, when 3 '/2-inch disks became available, 
two storage capacities appeared: 720K and 
1.44 megabytes. It wasn't until the introduc- 
tion of CD-ROM (compact disc read-only 

JULY A.N.A.L.O.Q. Computing 



memory) that a significant increase in remov- 
able storage capacity was attained. 

Most of us are now familiar with the new 
recording media used for music called the 
compact disc (CD). These laser "records" 
can contain up to 73 minutes of pop, click 
and static-free music with a fantastic signal- 
to-noise ratio and dynamic range. These same 
discs can also contain an incredible amount 
of data. Up to 550 megabytes of data can be 
stored on one side of a CD. That's equiva- 
lent to the storage capacity of over 6,000 of 
the original Atari 810 floppy disks. 

Read-only memory (ROM) is not a new 
concept, either, and is one that is familiar to 
most computer users. The information in the 
ROMs is permanent and can only be "read" 
by the computer. All computers, including 
Atari 8-bit machines, incorporate ROMs that 
contain the necessary "startup" information 
the computer needs to perform its self-check 
and access disk drives. 

The storage medium for digital audio discs 
and CD-ROMs is exactly the same. They use 
similar players in which a laser shines a beam 
under the disc and detects the presence or ab- 
sence of microscopic pits on the disc surface. 
Using a binary code common to all com- 
puters, a pit is a and the absence of a pit 
is a 1. In one case the data represents digi- 
tized music, and in the other it can represent 
programs, databases, dictionaries, encyclope- 
dias or any other collection of information. 

CD-ROMs are perfect for storing large 
amounts of information that will never 
change. However, a computer disk drive 
needs the ability to write as well as read. Two 
emerging technologies provide a solution to 
that need: WORM drives and floptical disks. 

WORM means "write once, read many." 
Data is permanently written to a disk by 
means of a laser that burns small holes into 
the optical disk. However, this can happen 
only once and is not practical when the stored 
data may change. WORM drives have been 
around for several years but have not caught 
on as a replacement for floppy or hard disks. 

A more promising technology has been 
created by Insite Peripherals under the 
guidance of Jim Shugart (one of the original 
designers of the 5 !4 -inch floppy disk). Each 
removable "floptical" disk can store 20 
megabytes of data. Physically, they are simi- 
lar to 3 '/2-inch, high-density, 1.44-megabyte 
disks. 

JULY A.IM.A.L.O.G. Computing 



The difference, however, is in the method 
used to store data: a combination of optical 
servo and magnetic recording technologies. 
The 3 '/2-inch magnetic disk is inscribed with 
concentric optical tracks at 20 micron inter- 
vals. A photo-detector (infrared LED) is used 
to guide the magnetic read/write head result- 
ing in more precise storage of the data. 

This arrangement allows a much higher 
track density compared with standard drives 



\/ A promising 
technology, the 

removable 

"floptical" disk 

can store 20 

megabytes of data, 

though they are 

physically similar 

to 3 ¥2 -inch disks. 



(1,250 vs. 135 tracks per inch). This means 
that more data can be packed onto the disk. 
The disk spins at 720 rpm, the servo- 
controlled head assembly is self-aligning, and 
the seek time is said to be 65 milliseconds. 
This access speed is typical for a 20-megabyte 
hard disk used on many PCs and com- 
patibles. 

Insite Peripherals will be selling their new 
optical-magnetic drives primarily to 
manufacturers who may then incorporate 
them into other products. Initially the drives 
will sell for about $250 and the special disks 
for under $10. You can probably expect to see 
some products containing floptical disk drives 
by the end of the year. 

Imagine the possibilities! What if Atari 
were to use one of these new disk drives in 
the much talked-about portable ST? Instead 



of containing a heavy, expensive and power- 
hungry hard disk, the ST laptop would be an 
innovative computer and be much more usa- 
ble. It wouldn't be the first time Atari in- 
troduced a powerful yet affordable computer. 
Let's hope they can do it again. 

Rumor Mill 

As of this writing, Atari may be preparing 
to shed the burden of its Federated Stores. As 
you probably know, Atari purchased the Fed- 
erated Electronics chain a couple of years 
ago, hoping to improve their distribution 
channel for their computer and video game 
products. However, since the consumer elec- 
tronics stores were bought, Atari has had 
nothing but financial and operational 
headaches with the stores. 

The Federated group of stores has shown 
continued losses which have affected the bot- 
tom line of Atari financials. Atari claims that 
the stores were overvalued when they were 
purchased which led Atari to pay an inflated 
price for the stores. The outcome of this mat- 
ter will be decided in the courts. 

Another problem has stemmed from Atari 
allegedly playing favorites with their own 
stores. Some dealers claim that the Federat- 
ed stores have been able to purchase products 
at lower prices than independent dealers. Fur- 
ther, when new products or upgraded 
products became available, the Federated 
stores allegedly were the first to receive them. 

A specific example of this supposedly oc- 
curred when Atari began including double- 
sided drives in the 520STFM computer. 
Other dealers around the country apparent- 
ly continued to get the older machines while 
Atari's own stores got the new models. 

Whether these allegations are true or not, 
it does seem that the Federated stores have 
been, if nothing else, a thorn in Atari's cor- 
porate side. Perhaps it will be for the best if 
Atari decides to dump the stores. At least 
maybe then, Atari can get back to the busi- 
ness of making and selling computers. And 
with Atari's scarce resources, they can't af- 
ford to spread themselves too thin. 

Arthur Leyenberger is a computer analyst 
and freelance writer who works out of his 
home in New Jersey. He can be reached on 
CompuServe at 71266,46 or on DELPHI as 
ARTL. C=l 

73 





JULY A.N.A.L.O.Q. Computing 



by Matt Fruin 




Left over from ancient days, the maze 
was always a great place to play and 
explore. At least it was until you and 
your friend, Velbert, got lost. With 
night coming on, you and Velbert 
grew more and more confused. Suddenly, the 
huge stone blocks comprising the maze rear- 
ranged themselves, shifting into new config- 
urations. Far off in the distance you heard the 
scratching sounds of something big wander- 
ing the maze. Too late you remembered the 
legend of the monsters, the spirits of those 
who died in the maze, who, destined to 
wander it for all eternity, came out with the 
stars and hunted those who are unwise 
enough to remain in the maze at night .... 

Playing the Game 

The object is to maneuver your player from 
the top left corner of the maze to the exit lo- 
cated at the lower right of the maze. The 
game can be paused by pressing any key, and 
can be aborted by pressing a console key (not 
System Reset), except when the game has 
been paused. Along the right side of the 
screen are choices to modify the game. To 
change any of the values, press Option until 
the larger cursor is opposite the category you 
want to change. Then press Select, either to 
move the smaller cursors, changing the visi- 
bility or game variation, or to change num- 
bers, representing speeds or number of 
monsters. 

Game Variations 

There are three different game variations. 
These are capture, paralyze and kill. In cap- 
ture, a player must touch the four monsters 
controlled by the computer before he or she 
can exit. The eight colored boxes on the far 
right signify which of the monsters (orange 
to the orange monster, blue to blue, etc.) have 
already been "captured." The top four cor- 
respond to the first player, the bottom four 
to the second player. In the paralyze option, 
the object is to exit without touching any of 
the computer-controlled monsters. If a play- 
er is touched, he or she is frozen for a few 
seconds and then slowly regains speed. In the 
kill variation, touching any of the monsters 
ends the game for that player. The other play- 
er can continue on, and try to get to the exit. 



JLY A.N.A.L.Q.Q. Computing 



Mazerunner 



•• 



Speed 



it 

There are three different visibility levels. 
These are clear, blackout and flash. When the 
visibility is clear, the entire maze is visible 
at all times. When it's set on blackout, the 
maze is black and the walls are not visible. 
In the flash level, the maze is black except 
for periodic flashes of visibility, which last 
for a fraction of a second. In all three levels 
the players and monsters are always visible. 



Enemy 



Here the players can choose the number of 
computer-controlled enemies they will face 
in the kill and paralyze variations. The num- 
ber ranges from to 16. Whatever number 
is chosen, though, does not affect the cap- 
ture variation, in which there are always four 
computer-controlled monsters. 



The eight colored 

boxes on the far 

right signify 

which of the 

monsters (orange 

to the orange 

monster, blue to 

blue, etc.) have 

already been 

"captured.'' 



This allows the players to choose speeds 
for the monsters and each of the players in- 
dividually. Speeds range from 1 to 4, 1 be- 
ing fastest and 4 being slowest. 

Limit 

There are only two possible selections for 
this choice: Y for yes and N for no. During 
every game the timer counts from 000 to 999. 
If Y is chosen for the time limit, the game 
ends when the counter reaches 999. Other- 
wise, the counter just rolls over to 000 and 
continues counting. The time it takes for the 
counter to count from 000 to 999 is about 2 
minutes, 45 seconds. 

Good luck! 

Matt Fruin has been programming his Atari, 
since 1982. Mazerunner is his first 100% 
machine-language game. 




CAME: 
CAPTURE ' 

PhRALYZE 
KILL 

VISIBILITY: 
CLEAR 
LHhCKDUT 
FLASHES 

ENEMY :Q± 

SPEED: 
ENEMY:! 

PLh¥ER1:1 
PLAYERZ'.l 

LIMIT :Y 
TIMER: DM? 



76 



JULY A.N.A.L.O.B. Computing 



LISTING 1: MIL EDITOR DATA 

1006 DATA 255,255,0,96,251,96,169,12,1 

33,12,169,96,133,13,169,1,4649 

1O10 DATA 133,9,32,64,108,169,64,133,2 

04,169,0,133,203,162,0,160,7168 

1020 DATA 0,145,263,200,208,251,230,20 

4,232,224,16,208,242,169,83,133,4392 

1030 DATA 203,162,96,169,3,157,66,3,16 

9,0,157,69,3,169,283,157,6002 

1O40 DATA 68,3,169,12,157,74,3,169,0,1 

57,75,3,32,86,228,169,4446 

1O50 DATA 6,133,88,169,64,133,89,169,0 

,141,47,2,169,0,141,48,2380 

1060 DATA 2,169,128,141,49,2,169,46,14 

1,47,2,169,255,141,28,208,6982 

1070 DATA 169,148,141,198,2,169,150,14 

1,196,2,169,68,141,197,2,32,5544 

1080 DATA 151,96,32,170,96,32,100,98,3 

2,230,98,169,97,141,231,6,6845 

1090 DATA 169,193,141,36,2,169,118,141 

,37,2,76,171,100,160,0,132,4027 

1100 DATA 203,169,64,133,204,185,74,11 

2,145,203,200,192,160,208,246,96,3966 

1110 DATA 169,8,133,208,133,209,169,16 

0,133,206,169,64,133,207,162,5,9913 

1120 DATA 32,239,96,202,16,250,162,87, 

32,2,97,202,16,250,32,217,7595 

1130 DATA 96,32,217,96,162,5,32,239,96 

,202,16,250,76,42,97,160,6952 

1140 DATA 6,32,32,97,200,169,0,145,206 

,200,192,25,208,249,169,240,3693 

1150 DATA 145,206,76,20,97,160,0,169,2 

55,145,206,200,192,25,208,249,3173 

1168 DATA 169,248,252,96,247,97,145,20 

6,32,20,97,96,160,0,32,32,3208 

1170 DATA 97,200,169,0,145,206,200,192 

,24,208,249,32,32,97,24,169,7328 

1180 DATA 40,101,206,144,2,230,207,133 

,206,96,169,255,145,206,208,169,4725 

1190 DATA 248,145,206,96,173,10,210,41 

,63,133,206,56,233,26,176,244,217 

1200 DATA 173,10,210,41,62,133,207,56, 

233,48,176,244,169,0,133,203,73 

1210 DATA 133,204,24,165,207,133,203,6 

,283,6,203,101,203,133,203,162,1255 

1220 DATA 4,6,203,38,204,202,208,249,2 

4,165,203,101,206,144,2,230,1392 

1230 DATA 204,133,203,24,165,203,185,1 

60,144,2,230,204,133,203,24,165,328 

1240 DATA 204,105,64,133,204,160,0,177 

,203,41,64,288,167,169,1,133,7891 

1250 DATA 207,173,10,210,41,3,106,144, 

33,106,144,18,198,204,160,96,7313 

1260 DATA 32,207,97,230,204,165,206,20 

8,71,198,204,76,238,97,160,160,3220 

1270 DATA 32,207,97,165,206,208,57,76, 

3,98,106,144,12,160,1,32,2776 

1280 DATA 207,97,165,206,240,92,76,230 

,97,198,204,160,255,32,207,97,2561 

1290 DATA 230,204,165,206,240,101,76,2 

30,97,177,203,41,64,133,206,165,1217 

1300 DATA 207,208,1,96,165,206,240,3,7 

6,81,98,169,1,133,206,96,7176 

1310 DATA 232,224,15,208,156,76,42,97, 

169,80,160,216,145,203,160,176,1789 

1320 DATA 145,203,248,97,243,98,160,13 

6,145,203,160,96,145,203,76,61,104 

1330 DATA 98,169,80,160,80,145,203,160 

,120,145,203,160,200,145,203,160,3535 

1340 DATA 160,145,203,76,61,98,160,0,1 

77,203,9,85,145,203,160,40,7225 

1350 DATA 145,203,169,80,160,41,145,20 



3,160,1,145,203,76,61,98,160,7766 

1360 DATA 39,169,85,145,203,160,255,19 

8,204,145,203,24,230,208,208,2,2777 

1370 DATA 230,209,165,208,281,228,288, 

9,165,209,201,1,208,3,96,104,8894 

1380 DATA 104,24,152,101,203,144,2,230 

,204,133,203,162,0,134,207,76,9665 

1390 DATA 135,97,162,1,134,205,202,189 

,218,110,133,203,232,189,218,110,4688 

140O DATA 133,204,164,205,136,192,0,24 

0,24,32,218,98,76,118,98,189,8249 

1410 DATA 218,118,201,24,208,2,230,204 

,24,101,203,144,2,230,264,133,462 

1420 DATA 203,160,8,132,206,232,189,21 

8,110,24,42,42,101,205,168,185,9819 

1430 DATA 113,111,164,206,192,9,240,8, 

145, 203, 280, 132, 206, 76, 151, 98, 533 

1440 DATA 224,151,208,263,230,205,165, 

205,201,5,240,5,162,0,76,105,8062 

1450 DATA 98,162,31,189,45,113,157,176 

,6,202,16,247,162,5,189,75,7556 

1460 DATA 113,157,240,6,202,16,247,96, 

165,203,24,105,40,144,2,230,7519 

1470 DATA 204,133,203,96,160,2,185,80, 

113,133,203,185,83,113,133,204,400 

1480 DATA 185,86,244,98,239,99,113,145 

, 203, 136, 16, 238, 96, 173, 228, 6, 186 

1490 DATA 208,35,206,229,6,16,30,169,4 

,141,229,6,173,31,208,281,8046 

1500 DATA 3,240,32,201,5,240,101,201,6 

,240,16,173,132,2,240,11,6889 

1510 DATA 173,133,2,240,6,32,128,109,7 

6,95,228,173,214,6,288,248,1077 

1528 DATA 76,154,106,162,1,189,192,6,2 

01,0,240,5,169,0,76,65,4287 

1530 DATA 99,169,150,141,196,2,173,176 

,6,10,32,110,99,169,0,160,4631 

1540 DATA 0,145,203,238,176,6,173,176, 

6,201,7,208,5,169,0,141,6250 

1550 DATA 176,6,24,10,32,110,99,169,25 

5,160,0,145,203,76,35,99,6162 

1560 DATA 170,189,178,6,133,283,189,17 

9,6,133,204,96,173,176,6,170,9607 

1570 DATA 56,233,2,176,57,32,163,99,16 

9,0,145,203,254,192,6,189,9868 

1588 DATA 192,6,281,3,288,5,169,0,157, 

192,6,32,163,99,169,60,5435 

1590 DATA 145,203,76,35,99,173,176,6,2 

48,2,169,3,24,125,192,6,4435 

1600 DATA 168,185,194,6,133,203,185,20 

0,6,133,264,160,0,96,233,1,7925 

1610 DATA 176,101,238,241,6,173,241,6, 

201,10,208,25,238,240,6,169,214 

1620 DATA 0,141,241,6,173,176,6,10,32, 

110,99,198,203,198,203,173,769 

1630 DATA 240,6,32,14,100,173,241,6,20 

1,7,208,18,173,240,6,201,8685 

1640 DATA 1,268,240,99,235,100,11,169, 

0,141,240,6,141,241,6,76,7012 

1650 DATA 210,99,173,176,6,10,32,110,9 

9,198,203,173,241,6,32,14,5576 

1660 DATA 100,76,35,99,10,10,185,109,1 

70,160,0,189,113,111,145,203,7974 

1670 DATA 152,24,105,40,168,232,192,16 

0,208,241,96,233,1,176,32,173,1060 

1688 DATA 176,6,10,32,110,99,198,283,1 

98,203,238,242,6,173,242,6,1740 

1690 DATA 201,5,208,5,169,1,141,242,6, 

32,14,180,76,35,99,233,4738 

1700 DATA 2,176,36,173,176,6,10,32,110 

, 99, 198, 203, 173, 176, 6, 41, 6149 

1710 DATA 1,170,254,243,6,189,243,6,20 



JULY A.IM.A.L.O.Q. Computing 



77 





1,5,208,5,169,1,157,243,9359 

1720 DATA 6,32,14,100,76,35,99,173,176 

,6,10,32,110,99,198,203,6071 

1730 DATA 198,203,198,203,173,231,6,73 

,84,141,231,6,32,18,100,76,4780 

1740 DATA 35,99,169,204,141,34,2,169,1 

10,141,35,2,32,115,101,169,4625 

1750 DATA 0,141,223,6,173,192,6,208,8, 

238,223,6,169,2,141,227,9397 

1760 DATA 6,169,4,141,229,6,169,251,14 

1,34,2,169,98,141,35,2,4516 

1778 DATA 169,0,141,228,6,169,150,141, 

196,2,32,124,108,169,0,141,6146 

1780 DATA 232,6,141,233,6,141,234,6,14 

1,235,6,141,226,6,133,224,9919 

1790 DATA 141,224,6,141,225,6,165,224, 

240,252,141,228,6,169,168,141,3136 

1800 DATA 1,210,236,100,231,101,32,52, 

108,169,0,141,218,6,169,16,5793 

1810 DATA 141,219,6,169,0,141,8,210,16 

9,3,141,15,210,169,0,141,6299 

1820 DATA 220,6,141,221,6,169,15,141,1 

10,6,141,111,6,32,115,101,3436 

1830 DATA 169,1,141,214,6,169,0,162,3, 

157,192,2,202,16,250,169,8657 

1840 DATA 150,141,196,2,32,170,96,32,1 

75,103,169,0,133,209,32,160,7135 

1850 DATA 108,169,255,141,30,208,169,0 

,141,34,2,169,197,141,35,2,3787 

i860 DATA 206,214,6,165,224,240,252,17 

3,218,6,240,10,169,0,141,8,8102 

1870 DATA 210,169,3,141,15,210,173,31, 

208,201,7,240,3,76,140,180,7427 

1880 DATA 173,232,6,240,16,173,233,6,2 

40,11,76,153,100,173,31,208,8749 

1890 DATA 201,7,208,249,96,162,1,189,1 

02,6,201,132,208,23,189,210,690 

1900 DATA 6,208,18,169,5,141,218,6,169 

,15,141,220,6,169,30,141,6509 

1910 DATA 221,6,76,153,100,202,16,223, 

198,224,162,1,189,232,6,208,1530 

1920 DATA 38,189,234,6,240,11,32,165,1 

07,173,208,6,240,25,76,194,8639 

1930 DATA 101,254,224,6,189,224,6,221, 

243,6,208,11,169,0,142,108,8056 

1940 DATA 6,157,224,6,32,232,103,202,1 

6,210,238,226,6,173,226,6,405 

1950 DATA 205,242,6,240,3,76,73,101,16 

9,0,141,226,6,173,192,6,6667 

1960 DATA 240,6,232,101,227,102,32,244 

,101,76,73,101,32,141,105,76,6100 

1970 DATA 73,101,238,80,6,174,80,6,224 

,16,208,6,162,255,142,80,8583 

1980 DATA 6,96,189,48,6,201,6,240,233, 

189,0,6,133,203,189,16,7856 

1990 DATA 6,133,204,62,64,6,62,64,6,17 

6,16,32,218,102,165,203,6783 

2000 DATA 157,0,6,165,204,157,16,6,76, 

244,101,189,48,6,201,4,5247 

2010 DATA 240,65,41,8,240,23,169,64,15 

7,64,6,160,0,32,157,103,4058 

2020 DATA 160,40,32,157,103,169,6,157, 

48,6,76,244,101,198,204,160,9772 

2030 DATA 216,32,86,106,230,204,160,0, 

32,103,106,160,1,32,103,106,4592 

2040 DATA 160,80,32,90,106,165,208,201 

,1,208,8,189,48,6,73,2,3686 

2050 DATA 76,204,102,173,10,210,41,3,1 

33,207,189,48,6,201,4,240,7867 

2060 DATA 11,165,207,93,48,6,240,4,41, 

1,240,231,165,207,106,144,110 



JULY A.N.A.L.O.B. Computing 



2079 DATA 31,166,144,16,168,216,198,28 

4,32,86,186,238,284,165,208,248,4919 

2888 DATA 210,76,282,182,168,88,32,86, 

106,165,208,248,198,76,282,102,1720 

2090 DATA 106,144,12,168,1,32,99,186,1 

65,288,240,183,76,282,102,168,1285 

2188 DATA 8,32,99,186,165,208,248,171, 

165,287,157,48,6,169,1,157,8835 

2110 DATA 64,6,32,218,102,76,32,102,18 

9,48,6,186,144,33,186,144,4987 

2128 DATA 15,168,228,182,223,183,48,32 

,157,103,198,284,168,216,32,167,1141 

2138 DATA 183,76,146,183,168,0,32,157, 

103,160,80,32,167,103,160,40,5959 

2140 DATA 76,146,103,168,8,32,157,183, 

160,48,32,157,183,189,48,6,4449 

2158 DATA 186,186,144,63,24,126,32,6,1 

26,32,6,176,11,168,8,32,827 

2168 DATA 167,183,168,48,32,167,183,96 

,189,32,6,248,25,168,8,32,3868 

2178 DATA 167,183,168,48,32,167,183,16 

0,1,169,128,32,178,183,160,41,6545 

2180 DATA 169,128,32,170,183,96,168,1, 

32,146,183,169,158,157,32,6,5363 

2190 DATA 76,27,103,62,32,6,176,14,62, 

32,6,160,0,32,167,103,1882 

2288 DATA 168,48,32,167,183,96,24,62,3 

2,6,189,32,6,248,22,32,2858 

2218 DATA 89,103,198,284,160,255,169,2 

,32,170,183,230,204,169,2,160,933 

2220 DATA 39,32,170,103,96,160,255,198 

,284,32,146,183,169,10,157,32,8256 

2230 DATA 6,76,89,183,152,24,101,203,1 

44,2,238,204,133,203,96,189,1631 

2248 DATA 32,6,73,255,49,283,145,283,9 

6,189,32,6,17,283,145,283,9289 

2250 DATA 96,169,128,141,7,212,24,105, 

2,133,206,169,255,141,188,6,8578 

2268 DATA 169,3,141,29,288,162,3,169,1 

,157,8,288,282,16,258,169,9826 

2278 DATA 282,141,192,2,169,138,141,19 

3,2,96,238,188,6,173,108,6,6658 

2288 DATA 281,2,224,183,219,184,288,6, 

169,255,141,188,6,96,173,188,9455 

2298 DATA 6,178,240,2,169,128,133,285, 

189,96,6,133,283,189,98,6,8722 

2368 DATA 133,284,62,186,6,62,106,6,17 

6,15,32,226,184,173,192,6,6191 

2318 DATA 208,6,32,54,189,174,188,6,96 

,169,8,133,287,157,184,6,5938 

2328 DATA 189,120,2,141,109,6,281,11,2 

48,84,254,184,6,281,13,248,9364 

2338 DATA 77,254,104,6,201,7,240,70,25 

4,104,6,201,14,240,63,169,9533 

2340 DATA 0,157,184,6,173,189,6,29,118 

,6,281,15,240,40,230,207,8666 

2358 DATA 173,189,6,73,15,93,110,6,76, 

29,184,165,287,248,13,169,7558 

2368 DATA 8,157,184,6,198,287,189,118, 

6,76,29,184,173,218,6,288,8545 

2370 DATA 5,169,1,141,218,6,169,64,157 

,186,6,76,7,184,169,8,3634 

2380 DATA 133,77,189,104,6,186,144,44, 

106,144,24,168,216,198,284,32,9486 

2398 DATA 86,186,238,284,165,288,248,1 

95,222,98,6,160,96,32,21,105,8162 

2400 DATA 76,209,104,168,80,32,86,186, 

165,288,240,175,168,160,32,21,9329 

2410 DATA 105,76,269,184,186,144,15,16 

8,1,32,99,166,165,288,248,155,316 

2426 DATA 32,21,185,76,289,164,168,8,3 



2,99,166,165,268,246,146,222,2642 

2436 DATA 98,6,168,255,32,21,165,173,1 

89,6,157,116,6,169,1,157,5584 

2448 DATA 166,6,228,184,215,185,32,226 

,184,76,7,164,188,186,6,169,7838 

2458 DATA 1,32,133,185,189,164,6,186,1 

44,18,186,144,6,222,188,6,4945 

2468 DATA 76,252,184,254,168,6,188,166 

,6,76,119,165,166,144,6,254,7951 

2476 DATA 182,6,76,14,185,222,162,6,18 

9,162,6,157,8,288,96,152,6942 

2486 DATA 24,125,96,6,144,3,254,98,6,1 

57,96,6,96,165,269,73,6979 

2496 DATA 2,133,269,238,266,178,169,6, 

133,265,32,62,165,232,169,128,1677 

2588 DATA 133,285,32,62,185,198,266,96 

,138,73,2,178,189,128,6,168,8259 

2516 DATA 169,0,145,265,32,133,185,145 

,285,268,145,265,138,73,2,176,253 

2528 DATA 41,1,168,189,124,6,153,2,288 

,138,77,227,6,176,189,138,9898 

2538 DATA 6,153,194,2,138,77,227,6,176 

,189,128,6,168,32,119,165,7138 

2548 DATA 96,169,8,145,265,169,1,32,13 

3,165,169,6,145,285,96,286,9357 

2556 DATA 145,265,286,145,265,288,96,2 

38,136,6,173,136,6,281,4,268,185 

2566 DATA 8,169,255,141,136,6,76,54,16 

9,176,189,112,6,133,283,189,28 

2578 DATA 116,6,133,284,62,132,6,62,13 

2,6,176,6,32,112,186,76,3599 

2588 DATA 141,165,198,264,166,216,32,8 

6,106,230,204,160,0,32,103,106,8456 

2596 DATA 166,1,32,163,166,166,88,32,9 

8,166,165,288,261,1,268,18,7654 

2666 DATA 189,128,216,165,211,166,6,73 

,2,133,267,76,246,165,173,18,8312 

2618 DATA 216,41,3,133,267,93,128,6,24 

8,4,41,1,246,246,165,287,916 

2628 DATA 186,144,44,166,144,24,166,21 

6,198,284,32,86,186,236,284,165,2786 

2638 DATA 288,246,219,166,96,222,116,6 

,32,146,166,76,78,186,166,88,7127 

2646 DATA 32,86,186,165,268,248,199,16 

8,166,32,148,186,76,78,166,186,8881 

2656 DATA 144,17,168,1,32,99,166,165,2 

88,248,179,168,1,32,146,166,8546 

2668 DATA 76,78,166,166,6,32,99,186,16 

5,268,248,162,168,255,222,116,4552 

2676 DATA 6,32,148,186,165,287,157,128 

,6,169,1,157,132,6,32,112,5485 

2688 DATA 186,76,141,185,169,6,133,268 

,177,283,41,5,268,2,238,268,865 

2698 DATA 96,169,0,133,208,177,283,41, 

80,208,2,238,208,96,189,128,2628 

2768 DATA 6,186,144,11,186,144,4,222,1 

28,6,96,254,126,6,96,166,6616 

2716 DATA 144,4,254,124,6,96,222,124,6 

,96,152,24,125,112,6,144,5833 

2728 DATA 3,254,116,6,157,112,6,96,169 

,6,133,77,141,223,6,141,7879 

2738 DATA 227,6,32,283,187,173,192,6,2 

88,26,169,4,141,218,6,141,8668 

2746 DATA 211,6,169,192,141,14,212,169 

,23,141,6,2,169,188,141,1,5344 

2758 DATA 2,76,234,186,169,64,141,14,2 

12,169,6,141,216,6,141,211,9953 

2766 DATA 6,173,212,166,287,167,248,6, 

246,2,16 9,18,169,241,6,176,9337 

2776 DATA 262,169,4,282,48,6,157,48,6, 

76,225,186,169,1,133,224,8248 



JULY A.N.A.L.O.Q. Computing 





2789 DATA 162,5,169,0,157,168,6,282,16 
,250,169,255,141,252,2,76,1880 

2790 DATA 95,228,173,252,2,201,255,240 
,13,169,12,141,117,228,169,96,2284 
2800 DATA 141,118,228,76,120,110,169,1 
,133,224,173,193,6,248,40,173,1078 
2810 DATA 222,6,240,6,206,222,6,76,69, 
107,169,0,141,196,2,173,7725 

2820 DATA 193,6,201,1,240,17,173,10,21 

0,41,127,208,10,169,10,141,7320 

2830 DATA 222,6,169,150,141,196,2,173, 

192,6,208,6,32,35,105,76,5295 

2840 DATA 154,107,162,0,189,4,208,240, 

62,173,192,6,201,1,240,28,9186 

2850 DATA 189,232,6,208,20,169,255,157 

,232,6,169,2,141,218,6,169,218 

2860 DATA 128,141,221,6,169,15,141,220 

,6,76,149,107,189,234,6,201,415 

2870 DATA 255,240,20,169,15,141,220,6, 

169,224,141,221,6,169,4,141,9574 

2880 DATA 218,6,169,255,157,234,6,232, 

224,2,208,184,169,255,141,30,3618 

2890 DATA 208,32,202,108,76,95,228,169 

,0,141,208,6,254,236,6,189,1588 

2900 DATA 236,6,221,234,6,208,21,94,23 

4,6,169,0,157,236,6,189,9408 

2910 DATA 234,6,201,1,208,3,222,234,6, 

238,208,6,96,169,30,133,9233 

2920 DATA 203,169,208,107,203,108,67,1 

33,204,162,4,32,246,107,202,208,2647 

2930 DATA 258,232,32,11,108,232,224,4, 

208,248,32,246,107,202,208,250,6311 

2940 DATA 162,7,189,234,112,157,160,6, 

202,16,247,96,160,0,173,192,883 

2950 DATA 6,208,2,169,168,41,168,145,2 

03,160,40,145,203,160,80,145,1482 

2960 DATA 203,24,169,240,101,203,144,2 

,230,204,133,203,96,72,152,72,1122 

2970 DATA 172,216,6,185,160,6,141,10,2 

12,141,23,208,208,192,8,208,1038 

2980 DATA 2,160,0,140,216,6,104,168,10 

4,64,162,48,189,242,112,157,1021 

2990 DATA 96,6,202,16,247,96,160,0,185 

,32,113,153,0,128,200,192,9627 

3000 DATA 13,208,245,152,153,0,128,200 

,192,106,208,248,169,65,153,0,1487 

3010 DATA 128,208,169,0,153,0,128,200, 

169,63,153,0,128,160,21,162,7951 

3020 DATA 4,169,141,153,0,128,153,41,1 

28,152,24,105,6,168,202,208,9548 

3030 DATA 240,96,162,15,169,104,157,0, 

6,169,79,157,16,6,169,10,4060 

3040 DATA 157,32,6,169,6,157,48,6,169, 

64,157,64,6,169,0,157,4923 

3050 DATA 80,6,202,16,223,96,160,0,169 

,0,153,0,120,153,0,121,5465 

3060 DATA 153,0,122,153,0,123,200,208, 

241,169,1,141,20,122,141,21,7974 

3070 DATA 122,141,148,122,141,149,122, 

169,40,141,0,208,141,1,208,96,8980 

3080 DATA 162,4,204,108,199,109,254,16 

8,6,189,168,6,201,10,208,10,8962 

3090 DATA 169,0,157,168,6,202,224,0,20 

8,236,162,3,189,168,6,24,8545 

3100 DATA 42,42,105,109,168,185,113,11 

1,157,88,78,32,49,109,200,138,8512 

3110 DATA 56,233,159,144,240,138,41,3, 

170,202,224,0,208,222,162,3,1328 

3120 DATA 189,168,6,201,9,208,33,202,2 

08,246,173,231,6,201,97,208,4289 



JULY A.N.A.L.O.O. Computing 



3136 DATA 23,169,1,141,232,6,141,233,6 

,169,6,141,218,6,169,0,7960 

3148 DATA 141,221,6,169,40,141,220,6,7 

6,128,109,138,105,40,170,96,7881 

3150 DATA 162,1,160,3,189,102,6,89,124 

,6,41,254,208,53,189,180,8673 

3160 DATA 6,89,120,6,41,254,208,43,140 

,212,6,152,224,0,240,3,9087 

3170 DATA 24,105,4,168,185,160,6,240,2 

3,169,0,153,160,6,222,210,522 

3180 DATA 6,169,15,141,220,6,169,0,141 

,221,6,169,3,141,218,6,7404 

3190 DATA 172,212,6,136,16,190,202,240 

,185,96,173,218,6,240,57,201,3555 

320O DATA 2,240,54,201,3,240,83,201,4, 

240,116,201,5,208,3,76,8654 

3219 DATA 33,110,201,6,208,3,76,61,118 
,174,219,6,202,142,219,6,9374 

3220 DATA 169,240,141,0,210,138,24,105 
,160,141,1,210,224,0,208,8,8719 

3230 DATA 142,218,6,169,16,141,219,6,9 

6,169,32,32,106,110,173,221,9348 

3240 DATA 6,233,200,109,195,110,8,176, 

11,174,220,6,202,48,9,142,7883 

3250 DATA 220,6,169,128,141,221,6,96,1 

69,8,141,218,6,96,169,160,9547 

3260 DATA 32,106,110,173,221,6,24,105, 

32,144,233,174,220,6,202,202,2260 

3270 DATA 48,9,142,220,6,169,0,141,221 

,6,96,169,160,141,1,210,9376 

3280 DATA 76,218,109,169,64,32,106,110 

,173,221,6,56,233,32,176,196,687 

3290 DATA 174,220,6,202,48,194,142,220 

,6,169,224,141,221,6,96,169,1889 

3300 DATA 160,32,106,110,173,221,6,24, 

105,32,144,11,174,220,6,202,8352 

3310 DATA 48,166,142,220,6,138,10,141, 

221,6,96,169,110,141,1,210,8964 

3320 DATA 173,220,6,141,0,210,174,221, 

6,232,224,60,208,22,173,220,3446 

3330 DATA 6,201,60,208,8,169,168,141,1 

,210,76,218,109,169,60,141,552 

3340 DATA 220,6,162,0,142,221,6,96,24, 

109,220,6,141,1,210,173,8467 

3358 DATA 221,6,141,0,210,96,169,140,1 

41,34,2,169,110,141,35,2,5555 

3360 DATA 169,255,141,252,2,169,160,14 

1,1,210,169,0,141,196,2,173,85 

3370 DATA 192,6,208,3,32,35,105,173,25 

2,2,201,255,240,30,169,255,4413 

3380 DATA 141,252,2,169,0,141,34,2,169 

,107,141,35,2,169,255,141,8842 

3390 DATA 30,208,173,193,6,208,5,169,1 

50,141,196,2,76,95,228,173,1238 

3400 DATA 223,6,196,110,191,111,240,3, 

32,35,105,76,98,228,173,192,826 

3410 DATA 6,208,3,32,35,105,32,128,109 

, 76 , 95, 228, 211, 65, 44, 45, 6577 

3420 DATA 46,47,48,37,26,26,26,200,4,1 

,19,22,23,20,6,26,7524 

3430 DATA 26,200,19,1,20,1,12,24,25,6, 

26,200,11,51,52,53,9755 

3440 DATA 26,26,26,26,26,24,38,39,40,4 

1,42,43,22,24,37,200,677 

3450 DATA 4,12,6,1,20,26,26,26,26,200, 

2,3,1,4,11,18,6960 

3460 DATA 23,22,26,200,7,12,1,21,8,6,2 

1,26,26,24,6,13,6334 

3470 DATA 14,15,16,17,37,27,28,24,21,1 

9,6,6,5,37,26,26,6271 



3480 DATA 26,200,6,13,14,15,16,17,37,2 

8,26,280,19,12,1,24,8497 

3490 DATA 6,20,28,37,28,200,19,12,1,24 

,6,20,29,37,28,24,7591 

3500 DATA 12,9,10,49,50,37,24,26,26,24 

,22,9,10,6,20,37,6534 

3510 DATA 27,27,27,0,48,204,252,204,48 

,204,252,204,240,207,243,252,9919 

3520 DATA 48,48,48,60,252,192,192,252, 

240,204,204,240,252,240,192,252,2692 

3530 DATA 252,240,192,192,204,252,204, 

204,207,207,204,204,60,252,204,12,7383 

3540 DATA 204,240,240,204,192,192,192, 

252,243,243,297,207,63,60,48,63,3997 

3550 DATA 60,63,51,48,243,243,48,48,48 

,240,192,192,252,204,204,252,7946 

3560 DATA 252,204,192,111,187,112,252, 

192,252,204,240,204,252,240,12,252,391 

3570 DATA 252,48,48,48,284,204,204,252 

,204,252,48,48,252,60,192,252,6430 

3580 DATA 0,0,0,0,252,204,204,252,48,2 

40,48,252,252,68,192,252,6920 

3590 DATA 252,60,12,252,192,204,252,12 

,252,240,12,252,252,192,252,252,650 

3600 DATA 252,12,48,192,252,204,252,25 

2,252,204,252,12,0,48,8,48,9716 

3610 DATA 204,204,252,48,287,207,192,2 

07,204,12,204,204,240,207,243,252,790 

3620 DATA 51,51,51,51,12,12,12,204,255 

,192,207,255,12,51,63,51,8161 

3630 DATA 60,63,51,48,243,243,51,51,24 

0,192,0,240,207,195,195,195,6025 

3640 DATA 192,0,0,0,204,204,204,207,12 

,12,12,207,0,0,0,192,5076 

3650 DATA 255,255,255,60,60,15,240,63, 

252,63,252,63,240,60,60,60,240 

3660 DATA 60,60,60,63,252,63,240,0,48, 

0,0,243,195,15,207,192,9868 

3670 DATA 252,252,195,51,204,255,255,2 

55,0,0,0,63,252,60,60,0,7362 

3680 DATA 252,63,240,60,60,60,60,63,60 

,63,60,63,240,60,60,0,4048 

3690 DATA 60,204,0,204,204,195,3,0,240 

,204,195,51,204,0,0,0,6794 

3700 DATA 0,0,0,51,204,63,252,63,0,60, 

0,63,192,60,60,60,4122 

3710 DATA 252,60,252,60,0,63,192,0,60, 

48,0,204,207,195,3,0,5734 

3720 DATA 192,240,188,112,88,113,195,5 

1,60,0,0,0,0,0,0,48,9603 

3730 DATA 12,60,60,63,252,63,252,60,60 

,63,252,60,60,60,60,63,6366 

3740 DATA 252,60,60,0,0,240,0,192,204, 

195,3,0,192,204,60,51,8155 

3750 DATA 60,0,0,0,104,70,22,118,104,7 

0,22,118,145,145,65,65,5072 

3760 DATA 19,19,40,40,0,0,64,64,0,0,0, 

0,167,124,81,103,1827 

3770 DATA 65,72,79,79,19,63,107,107,12 

8,84,40,128,0,0,0,0,578 

3780 DATA 64,64,64,64,0,0,106,72,24,12 

0,112,112,112,78,8,64,3302 

3790 DATA 14,14,14,0,77,64,65,0,0,220, 

65,76,69,188,72,156,6830 

3800 DATA 74,100,75,44,76,68,77,0,0,16 

3,107,51,19,219,163,66,6035 

3810 DATA 67,68,70,70,71,0,1,1,1,1,163 

,18,218,66,70,65,2749 

3820 DATA 60,60,255,226,2,227,2,0,96,0 

,0,0,0,0,0,0,7919 fl 



JULY A.IM.A.L.O.G. Computing 




continued from page 63 



0620 


.BYTE $88 ;DEY 






0630 


.BYTE $49, 545, $55, 


$4D 


EOR 


0640 


.BYTE $5D,$59,$41, 


$51 




0650 


.BYTE $E6,$F6,$EE, 


$FE 


INC 


0660 


.BYTE $E8 JINX 






0670 


.BYTE $C8 JINY 






0680 


.BYTE $4C,$6C ;JMP 






0690 


•BYTE $20 ;J5R 






0700 


.BYTE $A9,$A5,$B5, 


$AD 


LDA 


0710 


.BYTE $BD,$B9,$A1, 


$B1 




0720 


.BYTE $A2,$A6,$B6, 


$AE 


LDX 


0730 


.BYTE $BE 






0740 


.BYTE $A0,$A4,$B4, 


SAC 


LDY 


0750 


.BYTE $BC 






0760 


.BYTE $4A,$46,$56, 


$4E 


LSR 


0770 


.BYTE $5E 






0780 


.BYTE $EA JNOP 






0790 


.BYTE $09, $05, $15, 


$0D 


ORA 


0800 


.BYTE $1D,$19,$01, 


$11 




0810 


.BYTE $48 JPHA 






0820 


.BYTE $08 JPHP 






0830 


.BYTE $68 JPLA 






0840 


.BYTE $28 ;PLP 






0850 


.BYTE $2A,$26,$36, 


$2E 


ROL 


0860 


.BYTE $3E 






0870 


.BYTE $6A,$66,$76, 


$6E 


ROR 


0880 


.BYTE $7E 






0890 


.BYTE $40 ;RTI 






0900 


.BYTE $60 ;RT5 






0910 


.BYTE $E9,$E5,$F5, 


$ED 


SBC 


0920 


•BYTE $FD,$F9,$E1, 


$F1 




0930 


.BYTE $38 ;SEC 






0940 


.BYTE $F8 JSED 






0950 


.BYTE $78 ;SEI 






0960 


.BYTE S85,$95,$8D 


J5TA 




0970 


.BYTE $9D,$99,$81, 


$91 




0980 


.BYTE $86,$96,$8E 


;5TX 




0990 


.BYTE $84,$94,$8C 


J STY 




1000 


•BYTE $AA JTAX 






1010 


•BYTE $A8 JTAY 






1020 


.BYTE $BA ;T5K 






1030 


.BYTE $8A JTXA 






1040 


.BYTE $9A JTXS 






1050 


•BYTE $98 JTYA 






1060 


; 






1070 


;0ffsets into Mnenonic table 


1080 


1 






1090 


1FF5ET 






1100 


.BYTE 0,0,0,0,0,0 


0,0 


J ADC 


1110 


.BYTE 3,3,3,3,3,3 


3,3 


JAND 


1120 


.BYTE 6,6,6,6,6 JASL 




1130 


•BYTE 9 ;BCC 






1140 


.BYTE 12 JBCS 






1150 


.BYTE 15 ;BEQ 






1160 


.BYTE 18,18 ;BIT 






1170 


.BYTE 21 ;BMI 






1180 


.BYTE 24 JBNE 






1190 


.BYTE 27 ;BPL 






1200 


.BYTE 30 ,-BP.K 






1210 


.BYTE 33 ;BUC 






1220 


.BYTE 36 JBVS 






1230 


•BYTE 39 ;CLC 






1240 


•BYTE 42 JCLD 






1250 


.BYTE 45 JCLI 






1260 


•BYTE 48 JCLU 






1270 


.BYTE 51,51,51,51 


JCMP 




1280 


.BYTE 51,51,51,51 






1290 


.BYTE 54,54,54 JCPX 




1300 


.BYTE 57,57,57 ; CPY 




1310 


.BYTE 60,60,60,60 


;DEC 




1320 


.BYTE 63 ;DEX 






1330 


.BYTE 66 ;DEY 






1340 


.BYTE 69,69,69,69 


;EOR 




1350 


.BYTE 69,69,69,69 






1360 


•BYTE 72,72,72,72 


;INC 




1370 


.BYTE 75 ;INX 






1380 


.BYTE 78 ;INY 






1390 


.BYTE 81,81 ;JMP 






1400 


.BYTE 84 ;JSR 






1410 


.BYTE 87,87,87,87 


JLDA 




1420 


.BYTE 87,87,87,87 






1430 


.BYTE 90,90,90,90 


90 ; 


LDX 


1440 


.BYTE 93,93,93,93 


93 ; 


LDY 


1450 


•BYTE 96,96,96,96 


96 ; 


LSR 


1460 


.BYTE 99 ;MOP 






1470 


.BYTE 102,102,102 


102 


;ORA 


1480 


.BYTE 102,102,102 


102 




1490 


.BYTE 105 JPHA 






1500 


.BYTE 108 JPHP 






1510 


■BYTE 111 ;PLA 






1520 


.BYTE 114 JPLP 






1530 


.BYTE 117,117,117 


,117 


;rol 


1540 


.BYTE 117 






1550 


.BYTE 120,120,120 


,120 


;ROR 


1560 


■BYTE 120 






1570 


.BYTE 123 ;RTI 






1580 


.BYTE 126 ;RTS 






1590 


.BYTE 129,129,129 


,129 


;sbc 


1600 


.BYTE 129,129,129 


,129 




1610 


.BYTE 132 ;5EC 






1620 


.BYTE 135 ;SED 






1630 


.BYTE 138 JSEI 






1640 


.BYTE 141,141,141 


,141 


;sta 


1650 


.BYTE 141,141,141 







1660 
1670 
1680 
1690 
1700 
1710 
1720 
1730 
1740 
1750 
1760 
1770 
1780 
1790 
1800 
1810 
1820 
1830 
1840 
1850 
1860 
1870 
1880 
1890 
1900 
1910 
1920 
1930 
1940 
1950 
1960 
1970 
1980 
1990 
2000 
2010 
2020 
2030 
2040 
2050 
2060 
2070 
2080 
2090 
2100 
2110 
2120 
2130 
2140 
2150 
2160 
2170 
2180 
2190 
2200 
2210 
2220 
2230 
2240 
2250 
2260 
2270 
2280 
2290 
2300 
2310 
2320 
2330 
2340 
2350 
2360 
2370 
2380 
2390 
2400 
2410 
2420 
2430 
2440 
2450 
2460 
2470 
2480 
2490 
2500 
2510 
2520 
2530 
2540 
2S50 
2560 
2570 
2580 
2590 
2600 
2610 
2620 
2630 
2640 
2650 
2660 
2670 
2680 
2690 
2700 
2710 
2720 
2730 
2740 
2750 
2760 
2770 
2780 
2790 



.BYTE 144,144,144 ;STX 
.BYTE 147,147,147 ;STY 
.BYTE 150 ;TAX 



.BYTE 153 

.BYTE 156 

.BYTE 159 

.BYTE 162 

.BYTE 165 



;TAY 
JTSX 
;TXA 
JTXS 
JTYA 



Instruction Types 



= iMMe 
= Zero 
= Zero 

= Abso 
= Abso 
= Abso 
= Indi 

= Indi 

= ACCU 

= Rela 
= ImpI 
s Indi 
= Zero 



diate 

page 

page,X 
lute 
lute,X 
lute,Y 
rect,X 
rect,Y 
Mulator 
tive 
ied 
rect 

page, Y 



ITYPE 

.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
• BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
■ BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 
.BYTE 



0,1 

0,1 

8,1 

9 

9 

9 

1,3 

9 

9 

9 

10 

9 

9 

10 

10 

10 

10 

0,1, 

0,1, 

0,1, 

1,2 

10 

10 

8,1 

1,2 

10 

10 

3,11 

3 

0,1 

0,1, 

0,1 

8,1 

10 

0,1 

10 

10 

10 

10 

8,1, 

8,1 

10 

10 

0,1 

10 

10 

10 

1.2 

1,12 

1,2, 

10 

10 

10 

10 

10 

.10 



;adc 

J AND 



2 

z 

3 
3,4 



2,3,4,5,6,7 
2,3,4,5,6,7 
2,3,4 JASL 
BCC 
BCS 
BEQ 
BIT 
BMI 
BNE 
BPL 
BRK 
BUC 
BUS 
CLC 
CLD 
CLI 
CLU 

1,4,5,6,7 JCMP 
CPX 
CPY 

DLC 
DEX 
,DEY 

2,3,4,5,6,7 ;EOR 
3,4 ;INC 
JINX 
;INY 
; JMP 
; JSR 

2,3,4,5,6,7 ;LDA 
12,3,5 JLDX 
2,3,4 ;LDY 
2,3,4 JLSR 

JNOP 
2,3,4,5,6,7 JORA 
;PHA 
JPHP 
JPLA 
JPLP 
2,3,4 JROL 
2,3,4 JROR 
JRTI 
JRTS 
2,3,4,5,6,7 JSBC 
JSEC 
JSED 
JSEI 
3,4,5,6,7 JSTA 
,3 JSTX 
3 J STY 
JTAX 
JTAY 
JTSX 
JTXA 
JTXS 
JTYA 



jDisasseMbler JMP Tables 



DCOMT .WORD IMMED 
•WORD ZPAG 
.WORD ZPAGX 
.WORD ABSOL 
.WORD AB50LX 
.WORD ABSOLY 
.WORD INDX 
.WORD INDY 
.WORD ACCUM 
.WORD RELA 
.WORD IMP 
.WORD INDI 
.WORD ZPAGY 

NBTAB .BYTE 2,2,2 
.BYTE 2,1,2,1 



2 bytes 
2 bytes 

2 bytes 

3 bytes 
;3 bytes 
j 3 bytes 
2 bytes 

bytes 
bytes 
bytes 
bytes 
bytes 
bytes 

3,3,2 



,3,2 



COMMAX .BYTE ",X)" 
COMMAY .BYTE "Y,J" 
POINTB .BYTE " .BYTE $" 
5TEN .BYTE " *=$ '■ 

.BYTE "JEND=$ ",EOL,EOL,0 

INS_DST .BYTE EOL, "Insert des" 
.BYTE "t'n, RETURN", EOL, 

IN5_SRC .BYTE EOL, "Insert SOU" 
.BYTE "rce, RETURN", EOL, 8 

ALL. DONE .BYTE EOL, "COMp 1 eted" 



2800 .BYTE ", RETURN", EOL, 
2810 J 

2820 OUTP .BYTE EOL, "OUTPUT ",0 
2830 IN_P .BYTE EOL, "INPUT ",0 



LISTING 6: ASSEMBLY 



0100 
0110 
0120 
0130 
0140 
0150 
0160 
0170 
0180 
0190 
0200 
0210 
0220 
0230 
0240 
0250 
0260 
0270 
0280 
0290 
8300 
0310 
0320 
0330 
0340 
0350 
0360 
0370 
0380 
0390 
0400 
0410 
0420 
0430 
0440 
0450 
0460 
0470 
0480 
0490 
0500 
0510 
0520 
0530 
0540 
0550 
0560 
0570 
0580 
0590 
0600 
0610 
0620 
0630 
0640 
0650 
0660 
0670 
0680 
0690 
0700 
0710 
0720 
0730 
0740 
0750 
0760 
0770 
0780 
0790 
0800 
0810 
0820 
0830 
0840 
0850 
0860 
0870 
0880 
0890 
0900 
0910 
0920 
0930 
0940 
0950 
0960 
0970 
0980 
0990 
1000 
1010 
1020 
1030 
1040 
1050 
1060 
1070 
1080 
1090 
1100 
1110 
1120 
1130 
1140 
1150 



5AUEUD:DMPT5.M65 



SysteM Equates/Labels 
Consistent with MAPPING THE 
ATARI froM COMpute! books. 

Data storage technique by: 
Bryan Schappel 



.CBYTE 

.CBYTE 

.CBYTE 

.CBYTE 

•CBYTE 

.CBYTE 

.CBYTE 

.CBYTE 

.CBYTE 

.CBYTE 

.CBYTE 

.CBYTE 

.CBYTE 

.CBYTE 

.CBYTE 

.CBYTE 

.CBYTE 

.CBYTE 

.CBYTE 

.CBYTE 

.CBYTE 

.CBYTE 

.CBYTE 

.CBYTE 

.CBYTE 

.CBYTE 

.CBYTE 

.CBYTE 

.CBYTE 

.CBYTE 

.CBYTE 

.CBYTE 

.CBYTE 

.CBYTE 

.CBYTE 

.CBYTE 

.CBYTE 

.CBYTE 

.CBYTE 

.CBYTE 

.CBYTE 

.CBYTE 

.CBYTE 

.CBYTE 

.CBYTE 

.CBYTE 

.CBYTE 

.CBYTE 

.CBYTE 

.CBYTE 

.CBYTE 

.CBYTE 

.CBYTE 

.CBYTE 

.CBYTE 

■CBYTE 

.CBYTE 

.CBYTE 

.CBYTE 

.CBYTE 

.CBYTE 

.CBYTE 

.CBYTE 

.CBYTE 

.CBYTE 

.CBYTE 

.CBYTE 

.CBYTE 

.CBYTE 

.CBYTE 

.CBYTE 

.CBYTE 

.CBYTE 

.CBYTE 

.CBYTE 

.CBYTE 

.CBYTE 

.CBYTE 

.CBYTE 

.CBYTE 

.CBYTE 

.CBYTE 

.CBYTE 

.CBYTE 

.CBYTE 

.CBYTE 

.CBYTE 

•CBYTE 

.CBYTE 

.CBYTE 

.CBYTE 

.CBYTE 

.CBYTE 

.CBYTE 



$19, $00, $02, 
$09, $00, $06, 
$09, $00, $08, 
$08, $00, $09, 
$19,$O0,$0A, 
$19,$0O,$OC, 
$09, $00, $10, 
$09, $00, $11, 
$29, $00, $12, 
$09, $00, $20, 
$09, $00, $21, 
$09, $00, $22, 
$09, $00, $23, 
$09, $0O, $24, 
$09, $00, $25, 
$09, $0O, $26, 
$09, $00, $27, 
$89, $00, $28, 
$09, $00, $29, 
$09,$00,$2A, 
$09,$00,$2B, 
$09, $00, $41, 
$09, $00, $42, 
$09,$00,$4D, 
$09, $00, $52, 
$09, $00, $53, 
$09, $00, $54, 
$19, $00, $55, 
$19, $00, $58, 
$09,$00,$6A, 
$56,$G0,$D4, 
$56,$O0,$DA, 
$56,$00,$E0, 
$56,$00,$E6, 
$06,$00,$EC, 
$07,$00,$ED, 
$08, $00, SEE, 
$08,$00,$EF, 
$OA,$00,$FO, 
$08,$00,$F1, 
$O6,$O0,$F2, 
$19,$00,$F3, 
$09,$00,$FB, 
$18,$00,$FC, 
$18,$00,$FE, 
$19, $02, $00, 
$19, $02, $06, 
$19, $02, $08, 
$19, $02, $22, 
$19, $02, $24, 
$09,$02,$2B, 
$09,$02,$2F, 
$19, $02, $30, 
$09, $02, $32/ 
$08, $02, $34,' 
$08, $02, $35/ 
$08, $02, $36,' 
$09, $02, $44,' 
$O9,$02,$6F,' 
$79, $02, $70,' 
$39, $02, $78,' 
$79,$02,$7C,' 
$39, $02, $85,' 
$09,$G2,$A2,' 
$E9,$02,$A3,' 
$09,$O2,$B6,' 
S09,$02,$BE,' 
$09,$02,$BF,' 
S09,$02,$C0,' 
S09,$02,$C1,' 
$09,$02,$C2,' 
$09,$02,$C3,' 
$09,$02,$C4,' 
$09,$02,$C5,' 
$09,$02,$C6,' 
$09,$02,$C7,' 
$09,$02,$C8,' 
$18,$O2,$E0,• 
$19,$02,$E2,' 
$09,$02,$E4," 
$19,$02,$ES," 
$18,$02,$E7,' 
$39,$02,$EA,' 
$09,$02,$F0,' 
$G6,$02,$F2,' 
$08,$02,$F3," 
$08,$02,$F4," 
$09,$02,$FB,' 
$05,$02,$FC,' 
$09,$02,$FE,' 
$09,$02,$FF," 
$09, $03, $00,' 
$08, $03, $01,' 
$09, $03, $02,' 



■CA5INI" 
■TRAMSZ" 
■WARMST" 
■BOOT?" 
'D05UEC" 
•DOSINI" 
■P0KM5K" 
■BRKKEY" 
■RTCLOK" 
■ICHIDZ" 
'ICDNOZ" 
■ICCOMZ" 
■ICSTAZ" 
•ICBALZ" 
■ICBAHZ" 
■ICPTLZ" 
■ICPTHZ" 
■ICBLLZ" 
■ICBLHZ" 
■ICAX1Z" 
'ICAX2Z" 
■SOUNDR" 
■CRITIC" 
■ATRACT" 
•LMARGN" 
■RMARGN" 
■ROWCRS" 
■COLORS" 
■SAVMSC" 
■RAMTOP" 
■FRO" 
'FRE" 
"FR1" 
■FR2" 
■FRX" 
■EEXP" 
'N5IGN" 
■ESIGN" 
■FCHRFLG" 
■DIGRT" 
■CIX" 
■INBUFF" 
■RADFLG" 
•FLPTR" 
•FPTR2" 
'UDSLST" 
•UBREAK" 
'UKEYBD" 
■UUBLKI" 
•UUBLKD" 
■SRTIMR" 
■SDMCTL" 
■SDLSTL" 
■SSKCTL" 
■LPENH" 
■LPENU" 
■BRKKY" 
•C0LD5T" 
■GPRIOR" 
'PADDLO" 
■STICKO" 
'PTRIGO" 
■STRIGO" 
'ESCFLG" 
■TABMAP" 
INUFLG" 
'SHFLOK" 
'BOTSCR" 
'PCOLRO" 
'PC0LR1" 
'PC0LR2" 
'PC0LR3" 
COLORO" 
C0L0R1" 
C0L0R2" 
C0LOR3" 
C0L0R4" 
RUNAD" 
INITAD" 
RAMSIZ" 
MEMTOP" 
MEMLO" 
DUSTAT" 
CRSINH" 
CHI" 
CHACT" 
CHBAS" 
ATACHR" 
CH" 

DSPFLG" 
SSFLAG" 
DDEUIC" 
DUNIT" 
DCOMND" 



JULY A.1M.A.L.O.Q. Computing 






LISTING 7: ASSEMBLY 



1160 .CBYTE $09,S03,$03,"D5TATS" 

1170 .CBYTE $19,$03,$04,"DBUFL0" 

1180 .CBYTE $O9,$O3,$06,"DTIMLO" 

1190 .CBYTE $19,$03,$08,"DBYTL0" 

1200 .CBYTE $18,$03,$0A,"DAUXi" 

1218 .CBYTE $29,$03,$1A,"HATABS" 

1220 .CBYTE $88, $83, $40, "ICHID" 

1230 .CBYTE $08 , $83 , $41 , "ICDNO" 

1240 .CBYTE $08, $83, $42, "ICCBM" 

1250 .CBYTE $08, $03, $43, "ICSTA" 

1260 .CBYTE $88 , $03 , $44 , "ICBAL" 

1270 .CBYTE $08, $03 , $45 , "ICBAH" 

1280 .CBYTE $08 , $03 , $46, "ICPTL" 

1290 .CBYTE $08 , $83, $47, "ICPTH" 

1308 .CBYTE $08 , $03 , $48 , "ICBLL" 

1310 .CBYTE $88,$03,$49,"ICBLH" 

1320 .CBYTE $08 , $03 , $4A , "ICAX1" 

1330 .CBYTE $08, $03, $4B, "ICAX2" 

1348 .CBYTE $09, $03, $C0, "PRNBUF" 

1350 .CBYTE $89, $03, $FD, "CA5BUF" 

1368 .CBYTE $08, $05, $80, "LBUFF" 

1370 .CBYTE $09, $D0, $00, "HPOSPO" 

1388 .CBYTE $09, $D0, $01, "HP0SP1" 

1390 .CBYTE $89, $D0, $02, "HP05P2" 

1400 .CBYTE $B9,$DB,$03,"HPOSP3" 

1410 .CBYTE $09,$D0,$04,"HPO5M0" 

1420 .CBYTE $09 , $D0 , $05, "HP05M1" 

1430 .CBYTE $09, $DB, $06, "HP0SM2" 

1440 .CBYTE $09 , $D0 , $07 , "HP0SM3" 

1458 .CBYTE $89, $D0, $88, "5IZEP0" 

1460 .CBYTE $09 , $D0, $89, "5IZEP1" 

1470 .CBYTE $09, $D8, $0A, "SIZEPZ" 

1480 .CBYTE $09, $D8, $0B, "5IZEP3" 

1498 .CBYTE $08, SDO, $0C, "5IZEM" 

1588 .CBYTE $09 , $D0 , $12 , "COLPMO" 

1510 .CBYTE $09,$DO,$13,"COLPM1" 

1520 .CBYTE $09, $D0, $14, "C0LPM2" 

1530 .CBYTE $09, SDO, $15, "C0LPM3" 

1540 .CBYTE $09, $D0, $16, "COLPFO" 

1550 .CBYTE $09, $D0, $17, "C0LPF1" 

1560 .CBYTE $09, $D8, $18, "C0LPF2" 

1570 .CBYTE $09 , $D0 , $19 , "C0LPF3" 

1580 .CBYTE $88, $D0, $10, "COLBK" 

1590 .CBYTE $08, $D0, $1B, "PRIOR" 

1680 .CBYTE $09, $D0, $1D, "GRACTL" 

1610 .CBYTE $09,$DO,$1E,"HITCLR" 

1620 .CBYTE $09, $D0, $1F, "CONSOL" 

1630 .CBYTE $08 , $D2 , $00 , "AUDF1" 

1648 .CBYTE $88 , $D2 , $81 , "AUDC1" 

1658 .CBYTE $08 , $D2 , $82 , "AUDF2" 

1660 .CBYTE S08 , $D2 , $03, "AUDC2" 

1670 .CBYTE $08 , $D2 , $04 , "AUDF3" 

1680 .CBYTE $08 , $D2 , $05, "AUDC3" 

1698 .CBYTE $08 , $D2 , $06 , "AUDF4" 

1700 .CBYTE $08,$D2,$07,"AUDC4" 

1710 .CBYTE $09,SD2,$08,"AUDCTL" 

1720 .CBYTE $89 , $02 , $0A , "RANDOM" 

1730 .CBYTE $08 , $D2 , $0E , "IRQEN" 

1740 .CBYTE $08, $D2, $0F, "SKCTL" 

1750 .CBYTE $88, $D3, $88 , "PORTA" 

1760 .CBYTE $08, $D3, $01, "PORTB" 

1770 , CBYTE $08 , $D3 , $02 , "PACTL" 

1788 , CBYTE $08 , $D3 , $03 , "PBCTL" 

1790 .CBYTE $09 , $D4 , $00 , "DMACTL" 

1808 .CBYTE $09 , $D4 , $01 , "CHACTL" 

1818 , CBYTE $19,$D4,$02,"DLISTL" 

1828 .CBVTE $09 , $D4 , $04 , "HSCROL" 

1830 .CBYTE $Q9,$D4,$05,"USCR0L" 

1848 .CBYTE $09 , $D4 , $07 , "PMBA5E" 

1850 .CBYTE $09 , $D4 , $09 , "CHBA5E" 

1860 .CBYTE $08 , $D4 , $0A , "W5YNC" 

1878 .CBYTE $09 , $D4 , $0B , "VCOUNT" 

1888 .CBYTE $87 , $D4 , $0C, "PENH" 

1898 .CBYTE $07 , $D4 , SOD , "PENU" 

1900 .CBYTE $G8,$D4,$0E,"NM1EN" 

1910 .CBYTE $G6,$D8,$00,"AFP" 

1920 .CBYTE $07 , $D8 , $E6 , "FASC" 

1938 .CBYTE $86, $D9, $AA, "IFP" 

1948 .CBYTE $86 , $D9 , $D2 , "FPI" 

1950 .CBYTE $07, $DA , $44 , "ZFRO" 

1960 .CBYTE $06 , $DA , $46 , "ZF1" 

1970 .CBYTE $07, $DA, $60, "FSUB" 

1988 .CBYTE $07 , $DA , $66 , "FADD" 

1990 .CBYTE $07 , $DA , $DB , "FMUL" 

2000 .CBYTE $07 , $DB , $28 , "FDIV" 

2810 .CBYTE $09 , $DD , $40 , "PLYEUL" 

2020 .CBYTE $88 , $DD , $89 , "FLDBR" 

2030 .CBYTE $08 , $DD , $8D , "FLD8P" 

2040 .CBYTE $88 , $DD , $98 , "FLD1R" 

2850 .CBYTE $88 , $DD , $9C , "FLD1P" 

2060 .CBYTE $08 , $DD , $A7 , "FSTOR" 

2070 .CBYTE $08 , $DD, $AB , "F5T0P" 

2080 .CBYTE $08 , $DD , $B6 , "FMOVE" 

2090 .CBYTE $06 , $DD , $C0 , "EXP" 

2100 .CBYTE $08,$DD,$CC,"EXP10" 

2110 .CBYTE $06,$DE,$CD,"L0G" 

2120 .CBYTE $08 , $DE, $D1, "L0G10" 

2138 .CBYTE $89 , SE4 , $00, "EDITRV" 

2140 .CBYTE $09 , $E4 , $10 , "5CRENU" 

2150 .CBYTE $09 , $E4 , $20 , "KEYBDU" 

2160 .CBYTE $09, SE4, $30, "PRINTU" 

2170 .CBYTE $09 , SE4 , $40 , "CASETU" 

2188 .CBYTE $09 , $E5 , $50 , "DI5KIU" 

2190 .CBYTE $09 , $E4 , $53 , "DSKINU" 

2200 .CBYTE $07 , SE4 , $56 , "CIOV" 

2210 .CBYTE $07 , $E4 , $59 , "5I0V" 

2220 .CBYTE $09 , $E4 , $5C , "SETVBV" 

2230 .CBYTE $09 , $E4 , $5F , "5Y5VBV" 

2240 .CBYTE $09 , $E4 , $62 , "XITUBU" 

2250 .CBYTE $09 , $E4 , $74 , "HARMSV" 

2260 .CBYTE $09 , $E4 , $77 , "COLDSU" 

2270 .BYTE $00 

JULY A.N.A.L.O.Q. Computing 



SYSTEM EQUATES FILE FOR 
ATARI HOME COMPUTERS 

Last Revised: 6/26/88 



DISK I/O 



;D: UNIT 
;D: coMMand 



isector buffer 



0100 

0110 

0120 

0130 

0140 

0150 

0160 

0170 

0180 D5KINV 

0190 SIOV X 

0200 DDEUIC 

0210 DUNIT 

0228 DCOMND 

0230 D5TATS 

0240 DBUFLO 

0250 DBUFHI 

0260 DTIMLO 

0270 DBYTLO 

0280 DBYTHI 

0290 DSECLO 

0300 DSECHI 

0310 DAUX1 S $030A 

0320 DAUX2 X $030B 

0330 | 

0340 ;CI0 ROUTINES 

0350 ; 

0360 CIOU 

0370 ICCOM 

0380 ICBAL 

0390 ICBAH 

0400 ICBLL = $0348 

0410 ICBLH = $0349 

0420 AUX1 = 

0430 AUX2 X 

0440 RUNAD 

0450 INITAD 

0460 ; 

0470 ;SCREEN HANDLER/INTERRUPTS 

0480 ; 

$0200 

$0206 

$0208 

$8224 

$8222 

$0228 

S022F 

$D400 

$0230 

S02C8 

S02CJ 

$02C2 

$02C3 

$02C4 

$02C5 

$02C6 

$02C7 

$02C8 



: SE453 

SE459 
= $0300 

$0301 

= $0302 

: $0303 

: $0304 

= $0305 

= $0306 

; $0308 

$0309 

$030A 

$030B 



$E456 
$0342 
$0344 
$0345 



S034A 

S034B 

$02E0 

: $02E2 



; sector n 



;CI0 vector 
; c oMwand 
;buffer address 



;buffer len 



0490 UD5L5T 

0500 VBREAK 

0510 UKEYBD 

0520 UUBLKD 

0530 VVBLKI 

0540 SRTIMR 

0550 5DMCTL 

0560 DMACTL 

0570 5DLSTL 

0580 PCOLRO 

0590 PC0LR1 

0600 PC0LR2 

0610 PC0LR3 

0620 COLORO 

0630 C0L0R1 

0640 C0L0R2 

0650 C0L0R3 

0660 C0L0R4 

0670 CHBAS = $02F4 

0680 SETVBV = $E45C 

0690 SYSUBU = $E45F 

0700 XITUBU = $E462 

0710 NMIEN = SD40E 

0720 UCOUNT - $D40B 

0730 CHBASE = SD409 

0740 H5YNC s $D40A 

0750 CHACT X $02F3 

0760 CHACTL X $D401 

0770 CRSINH X $02F0 

0780 CHR5ET 

0790 HSCROL 

0800 VSCROL 

0818 IROEN 

0820 ; 

0830 ;MISC. 

0840 ; 

0850 CONSOL = $D01F 

0860 RTCLOK S $14 

0870 CH = $02FC 

0880 MEMLO = $02E7 

0890 SHFLOK = $02BE 

0900 INUFLG = $02B6 

0910 HARMSV = $E474 

0920 COLDSU = SE477 

0930 LBUFF = $0580 

0940 EOL = $9B 

0950 RANDOM = $D20A 

0960 PORTA s $D300 

0970 PORTB = $D30i 

0980 j 

0990 jDevice Vectors 

1000 i 

1010 HATABS = $031A 

1020 EDITRU = $E400 

1030 5CRENU = $E410 

1040 KEYBDU = SE420 

1050 PRINTU : $E430 

1060 CA5ETU = $E440 

1070 ; 

1080 JPAGE ZERO LOCATIONS 

1090 ; 

1100 CA5INI = $02 

1110 TRAM5Z = $06 

1120 HARMST = $08 

1138 BOOT? = $09 

1140 DOSVEC = $0A 



;DLI vector 
;BRK vector 
;keyboard vec 



;key repeat 
;DMA control 



;displag list 



;char set 



: $E000 

: $D404 

: $D405 

$D20E 



;ROM characters 



;console keys 



1150 DOSINI 

1160 P0KM5K 

1170 BRKKEY 

1180 SOUNDR 

1190 CRITIC 

1200 ATRACT 

1210 KEYDEF 



$0C 
$10 
$11 
$41 

$42 
$4D 

$79 



1220 


LMARGN = $52 




1230 


RMARGN X $53 




1240 


R0WCR5 - $54 




1250 


COLCRS = $55 




1260 


SAVMSC = $58 




1270 


RAMTOP = S6A 




1280 


; 




1290 


; FLOATING POINT 




1300 


] 




1310 


FRO s $D4 




1320 


FRE = $DA 




1330 


FR1 = $E0 




1340 


FR2 = $E6 




1350 


FRX 5 SEC 




1360 


EEXP = $ED 




1370 


NSIGN = $EE 




1380 


ESIGN = $EF 




1390 


FCHRFLG S $F0 




1400 


DIGRT = $F1 




1410 


CIX = $F2 




1420 


INBUFF = $F3 




1430 


RADFLG = $FB 




1440 


AFP S SD800 




1450 


FASC X SD8E6 




1460 


IFP X $D9AA 




1470 


FPI = $D9D2 




1488 


ZFRO = $DA44 




1498 


ZF1 = $DA46 




1500 


FSUB = SDA60 




1510 


FADD X $DA66 




1520 


FMUL = $DADB 




1530 


FDIU X SDB28 




1540 


PLYEUL = $DD40 




1550 


FMOUE = SDDB6 




1560 


EXP = SDDCO 




1570 


EXP10 X $DDCC 




1580 


LOG = SDECD 




1590 


L0G10 = SDED1 




1600 


; 




1610 


;STICK, PADDLES, TRIGGER5 


1620 


! 




1630 


PADDLO = $0270 




1640 


PADDL1 = $0271 




1650 


PADDL2 = $0272 




1660 


PADDL3 = $0273 




1670 


5TICK0 = $0278 




1680 


STICK1 = $0279 




1690 


PTRIGO r S027C 




1700 


PTRIG1 = S027D 




1710 


PTRIG2 = S027E 




i ? 2 


PTRIG3 s S027F 




1730 


STRIGO = $0284 




1740 


STRIG1 X $0285 




1750 


; 




1760 


;AUDI0 CONTROL 




1770 


• 




1780 


AUDF1 - $D200 




1790 


AUDC1 = $D201 




1800 


AUDF2 = SD202 




1810 


AUDC2 = SD203 




1820 


AUDF3 = $D204 




1830 


AUDC3 X SD205 




1840 


AUDF4 = SD206 




1850 


AUDC4 = SD207 




1860 


AUDCTL s SD208 




1870 


SKCTL = SD20F 




1880 


\ 




1890 


;P/M GRAPHICS 




1900 


j 




1910 


PMBASE = $D407 




1920 


GPRIOR = S026F 




1930 


HPOSPO = SDOOO 




1940 


HPOSPi = SD001 




1950 


HP05P2 = SD002 




1960 


HP0SP3 = SD003 




1970 


MOPF X SDOOO 




1980 


M1PF = $D001 




1990 


M2PF X $D002 




2000 


M3PF = $D0G3 




2010 


HPOSMO = SD004 




2020 


HP0SM1 = SD005 




2030 


HP05M2 = SD006 




2040 


HP05M3 = $D007 




2050 


POPF = $D004 




2060 


P1PF = SD005 




2070 


P2PF = SD006 




2080 


P3PF = SD007 




2090 


5IZEP0 = SD008 




2100 


5IZEP1 X SD009 




2110 


SIZEP2 = $DOOA 




2120 


SIZEP3 = $DOOB 




2130 


MOPL = $D008 




2140 


M1PL = $D009 




2158 


M2PL = SDOOA 




2160 


M3PL = $DOOB 




2170 


SIZEM = $DOGC JMiss 


i 1 e size 


2180 


POPL = SDOOC iPlay 


er/pf 


2190 


P1PL = SDOOD 




2200 


P2PL = SDOOE 




2210 


P3PL = $DOOF 




2220 


COLPMO = SD012 




2230 


C0LPM1 = 5D013 




2240 


C0LPM2 X SD014 




2250 


C0LPM3 = SD015 




2260 


COLPFO = SD016 




2270 


C0LPF1 = SD017 




2280 


C0LPF2 = SD018 




2290 


C0LPF3 = SD019 




2300 


COLBK s $D01A 




2310 


GRACTL = $D01D 




2320 


HITCLR = SD01E 




2330 


GRAFPO = SDOOD 




2340 


GRAFP1 = SDOOE 




2350 


GRAFP2 = SDOOF 




2360 


GRAFP3 = SD010 


d™ 


2370 


GRAFM = SD011 


k 




mJ£ 



S 



xW-, 



6e 






• : « 



■!■ 



-■I. 



fSif^B> 



Sk 









M\P% 1 







BOOT CAMP 



END USER 
ST NOTES